C# 调用 Java Webservice

因工作需要,跟JAVA发布的WS进行了对接。中途遇到许多问题,直到问题解决,才知道自己闹了多大的笑话。写个文章警醒自己。


  1. 因查看WSDL发现返回值是一个类(引用类型) 将WSDL生成本地代理类
    1. WSDL文档解析
    2. 将WSDL生成代理类
  2. 添加代理类到本地项目
    1. 此处我这里的代理中接口名称如下:public WsResultData FounderRequestData( string in0, string in1, string in2, string in3) { object[] results = this.Invoke("FounderRequestData", new object[] { in0, in1, in2, in3}); return ((WsResultData)(results[0])); }
    2. 返回的WsReusultData的部分定义如下: public partial class WsResultData{ private string respondeDataField; private System.Nullable<int> resultField; private bool resultFieldSpecified; public string respondeData { get { return this.respondeDataField; } set { this.respondeDataField = value; } } public System.Nullable<int> result { get { return this.resultField; } set { this.resultField = value; } } public bool resultSpecified { get { return this.resultFieldSpecified; } set { this.resultFieldSpecified = value; } } }
  3. 因为返回的对象为引用类型,且回传中包含string 字符串也为引用类型。这个时候我们需要直接获取对象的值如:.FounderRequestData(null, null, null, outXml).respondeData。这也就是常说为何从JAVA WS中获取到NULL的原因引用类型与值类型的区别

最后也可通过WebRequeset/HttpRwquest 等方式来进行通信。因时间关系未作此验证

posted @ 2020-05-22 15:52  すのはら荘の雪  阅读(376)  评论(0)    收藏  举报