c调用javawebservice
⑴ c#调用java webservice时,如何传byte[]类型的参数
你可以就传byte数组试一下,byte是按补码存储的,如果有转换,是可以得到正确的值的。
⑵ 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();
}
⑶ C# 调用Java的WebService(返回json格式数据),老是返回null, 求解!
按wsdl的描述:
<wsdl:operationname="getEAMObjects"parameterOrder="objectNamemobileWhereSQL">
而getEAMObjects(你问题中的缺少s)返回的值的内容是通过getEAMObjectsResponse()实现的,在XML中的描述如下:
<wsdl:message name="getEAMObjectsResponse">
<wsdl:part name="getEAMObjectsReturn" type="xsd:string"/>
</wsdl:message>
可以看出:返回的string(也行是Json串)而不是Json对象。
所以,你在调用后,需要你将得到的字符串转换成对象!!
⑷ c#调用java webservice怎么返回xml
这要取决于这个webservice返回的数据类型吧,如果是单纯的string数据,你们将接收到数据写入一个空的xml中,如果webservice本身返回回来的就是xml格式,你可以这么接收
XmlDocument xml = newXmlDocument();
xml.LoadXml(XmlNode.OuterXml) //XmlNode---为webservice返回xml的函数
⑸ 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提供的方法的时候会使用到。
⑹ c# 可以用httpclient调用java开发的webservice吗
Webservice是标准的。你可以在.NET这边,使用原生的http请求(HttpWebRequest),将服务者提供的soap消息格式做参数替换,然后当作http协议的实体内容发送到webservice所寄存的服务器上,然后WS会根据soap消息中参数,做出响应。你在客户端接收响应消息,不就好了?
当然,你也可以在.NET端去动态调用,根据WSDL文件描述,自己在.NET这边生成服务代理类,手动调用编译器去生成,然后用反射的方式去调用WS提供的webmethod。
⑺ C#调用java webservice服务
用VS自带的工具wsdl不行吗?
http://blog.csdn.net/wanderocn/article/details/6672370
⑻ C# 调用java webservice 接口
C#调用WEBSERVICE
只要在项目中添加WEBSERVICE引用就行了.
输入网址.很简单的
document对象
序列化 和 反序列化
JAVA C# 那个参数都用文本传递接受
⑼ c# 调用java webservice 出现客户端发现响应内容类型为UTF-8,但应为text/xml
UTF-8是编码格式,意思就是说,简单的理解就是你这个是中文呢,还是西文呢,还是日文呢。
text/xml 简单的说,告诉你我给你的东西是一个xml呢,还是一个mp3呢,还是一个doc呢。
不矛盾的