.Net調用Java的WebService之親身體驗 (轉自夢幻Dot Net)

前幾天公司和別的網站合作,對方用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等,最後的結果都是一樣的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章