.Net调用Java的WebService之亲身体验
前几天公司和别的网站合作,对方用Java的WebService给我们做了一个接口,我觉着既然是WebService,不管是用什么语言编写的,在asp.net工程中添加Web引用都应该得到WebService的一个代理类的。
操作步骤:
1.新建一个asp.net Web 应用程序
2.添加web引用,如图
3.在工程中多了一个名叫Web References得目录,代理类就在这里存放着
4.单击工程中的解决方案资源管理器中的显示所有文件,这是就可以看到那个代理类了,名字叫Reference.cs
上述工作进行得非常顺利,去沏了一杯茶,回来该调用接口了,但是此时意想不到的终于发生了,居然接口没有在代理类中显示出来,这样的话那怎么调用啊,我认为他的WebService肯定是有问题,于是就电话和对方沟通,他们说没有问题,用Java调用是没有问题的,我们都测试过的。我还是郁闷,于是就静下来想了想,觉着他们的WebService不是标准的WebService,于是又给他们打电话,要求他们把程序检查一下,看是不是标准的WebService,于是他们不耐烦地检查了一下程序,问题终于出现了,就是他们的WebService写的不是很标准的,但是哪儿的问题我没有过问。
把刚才的删除,又重新添加了一遍Web引用,这时,再看生成的代理类,OK,接口全部有了。
这里把生成的代理类代码给大家贴出来:
可以看到,这个代理类和引用.net的WebService生成的代理类没有什么区别,此时下面的工作就和用.Net的WebService就一样了
在此说明一下生成代理类还可以使用其它的方法,如wsdl等,最后的结果都是一样的。
操作步骤:
1.新建一个asp.net Web 应用程序
2.添加web引用,如图
3.在工程中多了一个名叫Web References得目录,代理类就在这里存放着
4.单击工程中的解决方案资源管理器中的显示所有文件,这是就可以看到那个代理类了,名字叫Reference.cs
上述工作进行得非常顺利,去沏了一杯茶,回来该调用接口了,但是此时意想不到的终于发生了,居然接口没有在代理类中显示出来,这样的话那怎么调用啊,我认为他的WebService肯定是有问题,于是就电话和对方沟通,他们说没有问题,用Java调用是没有问题的,我们都测试过的。我还是郁闷,于是就静下来想了想,觉着他们的WebService不是标准的WebService,于是又给他们打电话,要求他们把程序检查一下,看是不是标准的WebService,于是他们不耐烦地检查了一下程序,问题终于出现了,就是他们的WebService写的不是很标准的,但是哪儿的问题我没有过问。
把刚才的删除,又重新添加了一遍Web引用,这时,再看生成的代理类,OK,接口全部有了。
这里把生成的代理类代码给大家贴出来:
//------------------------------------------------------------------------------
// <autogenerated>
// This code was generated by a tool.
// Runtime Version: 1.1.4322.573
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </autogenerated>
//------------------------------------------------------------------------------
//
// 此源代码是由 Microsoft.VSDesigner 1.1.4322.573 版自动生成。
//
namespace JavaWebService {
using System.Diagnostics;
using System.Xml.Serialization;
using System;
using System.Web.Services.Protocols;
using System.ComponentModel;
using System.Web.Services;
/// <remarks/>
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Web.Services.WebServiceBindingAttribute(Name="VChargeBinding", Namespace="http://csdfsn.esfig/javaservice")]
public class VChargeService : System.Web.Services.Protocols.SoapHttpClientProtocol {
/// <remarks/>
public VChargeService() {
this.Url = "https://www.csdfsn.cn/cma/javaService?wsdl";
}
/// <remarks/>
[System.Web.Services.Protocols.SoapRpcMethodAttribute("", RequestNamespace="http://csdfsn.esfig/javaservice", ResponseNamespace="http://csdfsn.esfig/javaservice")]
[return: System.Xml.Serialization.SoapElementAttribute("result")]
public string doservice(string String_1) {
object[] results = this.Invoke("doservice", new object[] {
String_1});
return ((string)(results[0]));
}
/// <remarks/>
public System.IAsyncResult Begindovcharge(string String_1, System.AsyncCallback callback, object asyncState) {
return this.BeginInvoke("doservice", new object[] {
String_1}, callback, asyncState);
}
/// <remarks/>
public string Enddoservice(System.IAsyncResult asyncResult) {
object[] results = this.EndInvoke(asyncResult);
return ((string)(results[0]));
}
/// <remarks/>
[System.Web.Services.Protocols.SoapRpcMethodAttribute("", RequestNamespace="http://csdfsn.esfig/javaservice", ResponseNamespace="http://csdfsn.esfig/javaservice")]
[return: System.Xml.Serialization.SoapElementAttribute("result")]
public string docheck(string String_1) {
object[] results = this.Invoke("docheck", new object[] {
String_1});
return ((string)(results[0]));
}
/// <remarks/>
public System.IAsyncResult Begindocheck(string String_1, System.AsyncCallback callback, object asyncState) {
return this.BeginInvoke("docheck", new object[] {
String_1}, callback, asyncState);
}
/// <remarks/>
public string Enddocheck(System.IAsyncResult asyncResult) {
object[] results = this.EndInvoke(asyncResult);
return ((string)(results[0]));
}
}
}
// <autogenerated>
// This code was generated by a tool.
// Runtime Version: 1.1.4322.573
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </autogenerated>
//------------------------------------------------------------------------------
//
// 此源代码是由 Microsoft.VSDesigner 1.1.4322.573 版自动生成。
//
namespace JavaWebService {
using System.Diagnostics;
using System.Xml.Serialization;
using System;
using System.Web.Services.Protocols;
using System.ComponentModel;
using System.Web.Services;
/// <remarks/>
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Web.Services.WebServiceBindingAttribute(Name="VChargeBinding", Namespace="http://csdfsn.esfig/javaservice")]
public class VChargeService : System.Web.Services.Protocols.SoapHttpClientProtocol {
/// <remarks/>
public VChargeService() {
this.Url = "https://www.csdfsn.cn/cma/javaService?wsdl";
}
/// <remarks/>
[System.Web.Services.Protocols.SoapRpcMethodAttribute("", RequestNamespace="http://csdfsn.esfig/javaservice", ResponseNamespace="http://csdfsn.esfig/javaservice")]
[return: System.Xml.Serialization.SoapElementAttribute("result")]
public string doservice(string String_1) {
object[] results = this.Invoke("doservice", new object[] {
String_1});
return ((string)(results[0]));
}
/// <remarks/>
public System.IAsyncResult Begindovcharge(string String_1, System.AsyncCallback callback, object asyncState) {
return this.BeginInvoke("doservice", new object[] {
String_1}, callback, asyncState);
}
/// <remarks/>
public string Enddoservice(System.IAsyncResult asyncResult) {
object[] results = this.EndInvoke(asyncResult);
return ((string)(results[0]));
}
/// <remarks/>
[System.Web.Services.Protocols.SoapRpcMethodAttribute("", RequestNamespace="http://csdfsn.esfig/javaservice", ResponseNamespace="http://csdfsn.esfig/javaservice")]
[return: System.Xml.Serialization.SoapElementAttribute("result")]
public string docheck(string String_1) {
object[] results = this.Invoke("docheck", new object[] {
String_1});
return ((string)(results[0]));
}
/// <remarks/>
public System.IAsyncResult Begindocheck(string String_1, System.AsyncCallback callback, object asyncState) {
return this.BeginInvoke("docheck", new object[] {
String_1}, callback, asyncState);
}
/// <remarks/>
public string Enddocheck(System.IAsyncResult asyncResult) {
object[] results = this.EndInvoke(asyncResult);
return ((string)(results[0]));
}
}
}
可以看到,这个代理类和引用.net的WebService生成的代理类没有什么区别,此时下面的工作就和用.Net的WebService就一样了
在此说明一下生成代理类还可以使用其它的方法,如wsdl等,最后的结果都是一样的。