.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,接口全部有了。
這里把生成的代理類代碼給大家貼出來:
// <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等,最后的結果都是一樣的。
留言列表