當前位置:首頁 » 編程語言 » c調用java的webservice

c調用java的webservice

發布時間: 2022-09-09 03:46:38

A. C#如何訪問java介面

C#調用Java實現的WebService介面的步驟:
方法一:在項目中添加webservice引用,通過向導即能完成
方法二:為方便使用期間使用如下的兩個命令來將java的webservice描述地址最終編譯成一個動態庫使用
1、生成類文件
wsdl.exe /l:cs /n:NWS /out:C:/NWS.cs http://***.***.**.**/WebSite1/Service?wsdl
2、將類文件編譯成動態庫
csc /target:library /out:"c:\NWS.dll" c:\NWS.cs
後面的使用就是一樣的了
不過這里注意兩個問題:
(1)描述地址最後的參數?wsdl有時候不可或缺,最好加上,因為你最終要編譯的就是這個wsdl文件。但如果是本地的wsdl文件的話,忽略此問題。
(2)wsdl.exe是微軟VS中提供的一個工具,在VS命令好中可以直接調用出來 這里要記住/n:TestWS也即/namespace:TestWS中你自行定義的一個命名空間TestWS ,這個在你後續調用java的webservice提供的方法的時候會使用到。

B. C#調用CXF框架的JAVA的Webservice,怎麼驗證用戶名密碼

以下是我從上述鏈接文章里復制過來的,有疑問的地方我加了問題注釋:

1.C#調用java 編寫的webservice時不會自動生成 soapheader 類介面的,需要改動Reference.cs。
2.改動方法
a、 繼承System.Web.Services.Protocols.SoapHeader ,生成一個新類(MyHeader,這里名字無所謂),類中擴展調要webservice 試soapheader中要求的成員,名稱一定要與對方要求的一樣

public class MyHeader : System.Web.Services.Protocols.SoapHeader
{
public string user; //= "12650000238BF747AD";
public string pwd ;//= "";
public MyHeader()
{
user = "";
pwd = "";
}

C. JAVA調用C語言發布的webservice介面

Java調用WebService可以直接使用Apache提供的axis.jar自己編寫代碼,或者利用Eclipse自動生成WebService Client代碼,利用其中的Proxy類進行調用。理論上是一樣的,只不過用Eclipse自動生成代碼省事些。
1、編寫代碼方式:

packagecom.yun.test;
importjava.rmi.RemoteException;
importorg.apache.axis.client.Call;
importorg.apache.axis.client.Service;
importorg.apache.axis.message.PrefixedQName;
importorg.apache.axis.message.SOAPHeaderElement;
importcom.cezanne.golden.user.Exception;
importcom.cezanne.golden.user.UserManagerServiceProxy;
importjavax.xml.namespace.QName;
importjava.net.MalformedURLException;
importjavax.xml.rpc.ServiceException;
importjavax.xml.soap.Name;
importjavax.xml.soap.SOAPException;
publicclasstestWebService{
publicstaticStringgetResult()throwsServiceException,MalformedURLException,RemoteException,SOAPException
{
//標識WebService的具體路徑
Stringendpoint="WebService服務地址";
//創建Service實例
Serviceservice=newService();
//通過Service實例創建Call的實例
Callcall=(Call)service.createCall();
//將WebService的服務路徑加入到call實例之中.
call.setTargetEndpointAddress(newjava.net.URL(endpoint));//為Call設置服務的位置
//由於需要認證,故需要設置調用的SOAP頭信息。
NameheaderName=newPrefixedQName(newQName("發布的wsdl里的targetNamespace里的url","string_itemName"));
org.apache.axis.message.SOAPHeaderElementheader=newSOAPHeaderElement(headerName);
header.addTextNode("blablabla");
call.addHeader(header);

//=newSOAPHeaderElement("發布的wsdl里的targetNamespace里的url","SoapHeader");
//soapHeaderElement.setNamespaceURI("發布的wsdl里的targetNamespace里的url");
//try
//{
//soapHeaderElement.addChildElement("string_itemName").setValue("blablabla");
//}
//catch(SOAPExceptione)
//{
//e.printStackTrace();
//}
//call.addHeader(soapHeaderElement);
//調用WebService的方法
org.apache.axis.description.OperationDescoper;
org.apache.axis.description.ParameterDescparam;
oper=neworg.apache.axis.description.OperationDesc();
oper.setName("opName");
param=neworg.apache.axis.description.ParameterDesc(newjavax.xml.namespace.QName("","arg0"),org.apache.axis.description.ParameterDesc.IN,newjavax.xml.namespace.QName(","string"),java.lang.String.class,false,false);
param.setOmittable(true);
oper.addParameter(param);
param=neworg.apache.axis.description.ParameterDesc(newjavax.xml.namespace.QName("","arg1"),org.apache.axis.description.ParameterDesc.IN,newjavax.xml.namespace.QName(","string"),java.lang.String.class,false,false);
param.setOmittable(true);
oper.addParameter(param);
param=neworg.apache.axis.description.ParameterDesc(newjavax.xml.namespace.QName("","arg2"),org.apache.axis.description.ParameterDesc.IN,newjavax.xml.namespace.QName(","string"),java.lang.String.class,false,false);
param.setOmittable(true);
oper.addParameter(param);
oper.setReturnType(newjavax.xml.namespace.QName(","string"));
oper.setReturnClass(java.lang.String.class);
oper.setReturnQName(newjavax.xml.namespace.QName("","return"));
oper.setStyle(org.apache.axis.constants.Style.WRAPPED);
oper.setUse(org.apache.axis.constants.Use.LITERAL);
oper.addFault(neworg.apache.axis.description.FaultDesc(
newjavax.xml.namespace.QName("發布的wsdl里的targetNamespace里的url","Exception"),
"Exception",
newjavax.xml.namespace.QName("發布的wsdl里的targetNamespace里的url","Exception"),
true
));
call.setOperation(oper);
call.setOperationName(newjavax.xml.namespace.QName("發布的wsdl里的targetNamespace里的url","opName"));
//調用WebService,傳入參數
Stringres=(String)call.invoke(newObject[]("arg0","arg1"));
System.out.println("===============");
returnres;
}
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
try{
System.out.println(getResult());
}catch(MalformedURLExceptione){
e.printStackTrace();
}catch(RemoteExceptione){
e.printStackTrace();
}catch(ServiceExceptione){
e.printStackTrace();
}catch(SOAPExceptione){
e.printStackTrace();
}
}
}

2、利用Eclipse自動生成WebService client代碼就容易多了:
首先,new project,選擇other,在輸入框中輸入Web Service Client,選中搜索後的結果,點擊Next,在Service definition中輸入 WebService的發布地址,點擊Finish
這樣,WebService Client代碼已經生成好了。
接下來寫一個Test類,在main函數中輸入如下代碼:

Stringendpoint="伺服器的WebService的地址";
YourWebServiceNameProxyumsp=newYourWebServiceNameProxy(endpoint);
try{
StringresultStr=umsp.opMethod("arg0","arg1");
System.out.println(resultStr);
}catch(Exceptione){
System.out.println("異常");
e.printStackTrace();
}catch(RemoteExceptione){
System.out.println("RemoteException異常");
e.printStackTrace();
}

D. C# 調用java webservice 介面

C#調用WEBSERVICE
只要在項目中添加WEBSERVICE引用就行了.
輸入網址.很簡單的

document對象
序列化 和 反序列化
JAVA C# 那個參數都用文本傳遞接受

E. C#怎麼調用axis2的java做的webservice

方式一:生成客戶端代碼調用方式。
通過插件工具生成客戶端代碼進行調用。例如:存在一服務為 127.0.0.1:8000/axis2/services/SMSSendService?wsdl通過插件可以生成SMSSendServiceStub.Java和SMSSendServiceCallbackHandler.java類。調用的客戶端代碼如:
try {
SMSSendServiceStub stub=new SMSSendServiceStub();
SMSSendServiceStub.method1 m1=new SMSSendServiceStub.method1();
m1.setParam1("xxx");
try {
String ret=stub.multiSend(m1).get_return();
System.out.print(ret);
} catch (RemoteException e) {
e.printStackTrace();
}
} catch (AxisFault e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

方式二:使用axis2.rpc.client.RPCServiceClient方式調用。
調用的代碼簡單舉例如下:
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
......
try {
final String endpoint = " 127.0.0.1:8000/axis2/services/SMSSendService";
String opName = "method1";
String param="xxx";
Object[] opArgs = new Object[] { param };
Class<?>[] opReturnType = new Class[] { String[].class };
RPCServiceClient serviceClient = new RPCServiceClient();//此處RPCServiceClient 對象實例建議定義成類中的static變數,否則多次調用會出現連接超時的錯誤。
Options options = serviceClient.getOptions();
EndpointReference targetEPR = new EndpointReference(endpoint);
options.setTo(targetEPR);
QName opQName = new QName("service.ws.sms.ipcc.ydtf.com",
opName);
Object[] ret = serviceClient.invokeBlocking(opQName, opArgs,
opReturnType);
System.out.println(((String[]) ret[0])[0]);
} catch (AxisFault e) {
e.printStackTrace();
}

F. C#調用java webservice服務

用VS自帶的工具wsdl不行嗎?
http://blog.csdn.net/wanderocn/article/details/6672370

G. vc 創建的MFC dll 怎麼調用java 寫的webservice

dll是你自己寫的嗎?有.h 文件嗎?java掉DLL的庫函數 需要寫中間過渡的Dll的。因為C++和java數據類型定義不同,需要中間dll做數據轉換的。 有DLL的.h文件的話,自己按JNI的教程寫一個轉換DLL就行。

H. C#調用java寫的webservice時出現錯誤

這個很正常的,在傳輸的過程中,數據結構保存的可能沒那麼完整,java我不是很熟悉,但是應該有方式聲明返回結果的數據結構的。之前出現過我寫的C#的WCF讓JAVA調用,List編程數組的情況。
話說回來,就算是數組,用起來和list差不多的,都是繼承同一個基類的

I. c# 可以用httpclient調用java開發的webservice嗎

Webservice是標準的。你可以在.NET這邊,使用原生的http請求(HttpWebRequest),將服務者提供的soap消息格式做參數替換,然後當作http協議的實體內容發送到webservice所寄存的伺服器上,然後WS會根據soap消息中參數,做出響應。你在客戶端接收響應消息,不就好了?
當然,你也可以在.NET端去動態調用,根據WSDL文件描述,自己在.NET這邊生成服務代理類,手動調用編譯器去生成,然後用反射的方式去調用WS提供的webmethod。

熱點內容
成都少兒編程培訓機構 發布:2025-01-13 03:21:20 瀏覽:88
linuxatop 發布:2025-01-13 03:19:01 瀏覽:438
彩38源碼下載 發布:2025-01-13 03:16:51 瀏覽:971
手機app緩存可不可以刪 發布:2025-01-13 03:10:46 瀏覽:937
安卓怎麼顯示第五個人圖鑒 發布:2025-01-13 03:03:23 瀏覽:922
內網訪問很慢 發布:2025-01-13 03:01:01 瀏覽:454
魔獸腳本p閃 發布:2025-01-13 02:58:40 瀏覽:290
java遞減 發布:2025-01-13 02:54:40 瀏覽:489
決策樹的演算法例題 發布:2025-01-13 02:53:15 瀏覽:448
腳本四要素 發布:2025-01-13 02:40:18 瀏覽:929