本文档主要记录c#去调用java webservice的步骤
一、
使用loushang平台,先生成wsdl再生成wsdd
文件目录:
wsdd的文件如下:
<service name="CheckTask" provider="java:RPC" style="wrapped" use="literal">
<parameter name="wsdlTargetNamespace" value=">
<parameter name="wsdlServiceElement" value="CheckTaskService"/>
<parameter name="schemaQualified" value=">
<parameter name="wsdlServicePort" value="CheckTask"/>
<parameter name="className" value="com.wms.webservices.checktask.CheckTaskSoapBindingSkeleton"/>
<parameter name="wsdlPortType" value="CheckTask"/>
<parameter name="typeMappingVersion" value="1.2"/>
<parameter name="allowedMethods" value="*"/>
<typeMapping
xmlns:ns="
qname="ns:CheckItem"
type="java:com.wms.webservices.checktask.vo.CheckItem"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
encodingStyle=""
/>
</service>
ps:com.wms.webservices.checktask.vo.CheckItem 是实体
这样java的服务端就搭建好了。
访问地址:http://localhost:8080/test/services/CheckTask?wsdl
可用soapUI工具测试,wsdl是否可用。
二、
c#项目的Web References右击添加新web 引用
将http://localhost:8080/test/services/CheckTask?wsdl填入,起个引用名字CheckTask,
使用这个引用创建对象,调用服务的query方法
Checktask.CheckTaskService tasklist = new WMS_MOBILE.Checktask.CheckTaskService();
if ("".Equals(tasklist.query()) || tasklist.query() == null)
{
return clientcode;
}
Checktask.CheckItem[] items = tasklist.query();
这样就在c#端成功调用了。
三、总结
c#调java的webservice可以传递实体和实体数组以及其他类型,在起初因为实体没哟序列化和反序列化话,没有传递成功。走了很多弯路,还以为c#和java直接有代理类。
webservice走的是SOAP协议、http协议。PC版本的WEbservice客户端库非常丰富,例如Axis2,CXF等,