非同步呼叫webservice,怎麼取到返回值

時間 2022-07-09 22:10:04

1樓:折柳成萌

我是用乙個動態鏈結webservice的類呼叫webservice,引數是以乙個陣列的形式傳入的。

問題解決了,返回引數不是返回給乙個變數,是返回給了我輸入的引數的陣列中

c# code

webservice service=new webservice();

string errstr=string.empty;

service.userlogin(ref errstr,"name","pwd","chk");

response.write(errstr);

2樓:雨飛佔學

反射呼叫帶ref或out引數的方法時,需要精確指定type的個數與型別

system.reflection.methodinfo mi = t.getmethod(methodname);

system.reflection.methodinfo mi = t.getmethod(methodname,new type

);另外**類的方法改下

public static object invokewebservice(string url, string classname, string methodname, object args,param type types)

如何非同步呼叫webservice,非同步呼叫有什麼優勢

3樓:黑馬程式設計師

非同步呼叫webseviced的方法如下:

通常的web服務中對web方法的呼叫都是在客戶端發出請求後將一直等待,直到得到返回的結果為止,這樣如果某些web方法的處理需要很長一段時間才能處理完成的話,將會大大降低程式的效率。但是如果採用非同步呼叫的方式將能使這個問題得到有效的解決,讓客戶端在發出請求之後的等待時間裡去做其他的事情而不是一直在那裡呆呆在等待。

對非同步呼叫的理解:

說白了非同步呼叫其實就是呼叫者執行緒和執行被呼叫過程的執行緒並行執行。

實現web服務方法非同步呼叫有四種方法可以實現

第一種方法:使用**

使用這種方式來進行web服務方法的非同步呼叫關鍵是在啟動非同步呼叫時傳入乙個**例項作為呼叫結束時的**方法。這樣用以**的方法呼叫結束非同步呼叫的方法獲得非同步呼叫的結果。若呼叫方要跟非同步呼叫同步,則需要在啟動非同步呼叫時傳入乙個同步物件[作為最後乙個引數],然後在**方法中通過iasyncresult的asyncstate成員獲得該物件。

舉乙個例子:

假如有下面乙個web服務方法

[webmethod]

public string getname(string name)

/*****************客戶端呼叫**************************

class client

public void callwithback()

static void main(string ars)

}第二種方法:使用輪詢

輪詢就是不斷檢查非同步呼叫啟動後獲得的iasyncresult變數的iscompleted屬性,以等待非同步呼叫結束。而一般在判斷非同步呼叫還未結束時,呼叫thread類的靜態方法sleep(0)迫使當前執行緒由執行狀態轉入就緒狀態。

如:web服務方法還是以上面的例子為例:

客戶端實現:

class client

string ret;

ret=service.endgetname(ar);

console.writeline("the result is:"+ret);

}static void main(string ars)

}第三種方法是:開始呼叫,結束呼叫

這種方式在啟動非同步呼叫後用結束非同步呼叫的方式獲取結果,如果非同步呼叫沒有結束,當前線成被阻塞。

如:web服務方法還是以上面的例子為例:

客戶端實現:

class client

static void main(string ars)

}最後一種方法是:開始呼叫,等待處理,結束呼叫

在我們啟動非同步呼叫後,客戶獲得了返回的iasyncresult成員,呼叫線成在iasyncresult 的asyncwaithandle屬性表示的同步物件上等待,最後結束非同步呼叫以獲得結果。

如:web服務方法還是以上面的例子為例:

客戶端實現:

class client

else

console.writeline("the result is:"+ret);

}static void main(string ars)

}ps: 在產生的**類中系統已經自動為我們建立了非同步呼叫介面,不需要我們去再次實現。如begin***,end***等。

如上面的web方法getname在**類中的非同步介面應該是下面這樣:

public system.iasyncresult begingetname(string name,system.asycncallback callback,object asyncstate)

public string endgetname(system.iasyncresult reult)

對於其他的函式可以查閱msdn以上。

我怎樣獲取webservice的返回值

4樓:福喜

我是用乙個動態鏈結webservice的類呼叫webservice,引數是以乙個陣列的形式傳入的。

問題解決了,返回引數不是返回給乙個變數,是返回給了我輸入的引數的陣列中

c# code

webservice service=new webservice();

string errstr=string.empty;

service.userlogin(ref errstr,"name","pwd","chk");

response.write(errstr);

非同步呼叫webservice,怎麼取到返回值

5樓:育知同創教育

我是用乙個動copy態鏈結webservice的類呼叫baiwebservice,引數是以乙個陣列的形式傳入du的。

問題解決了zhi

,返回dao引數不是返回給乙個變數,是返回給了我輸入的引數的陣列中c# code

webservice service=new webservice();

string errstr=string.empty;

service.userlogin(ref errstr,"name","pwd","chk");

response.write(errstr);

急!j**a呼叫webservice並解析返回值,重謝!!

6樓:匿名使用者

你可以自己用soap協議呼叫這個webservice。第二種是你可以用eclipse axis2通過這個webservice的wsdl描述生成客戶端呼叫**。我建議你用第二種方法。

算了,分這麼多,我幫你寫乙個吧。

7樓:小童鞋_成

您好,提問者:

解析xml可以使用dom4j技術。

參考資料

如何訪問webservice的介面,返回值是xml的,資料如何獲取到

8樓:

構建xml文件物件

在解析xml文件前,需要構建要解析的xml檔案所對應的xml文件物件。在獲取xml文件物件時,首先需要建立saxreader物件,然後呼叫該物件的read()方法獲取對應的xml文件物件,然後呼叫xml文件物件裡的例項變數(就是xml裡面的資料)。

具體**如下:

string fileurl=request.getrealpath(「xml的路徑」);

saxreader reader=new saxreader();

document document=reader.read(new file(fileurl));

然後用物件document呼叫xml裡面的資料。

希望這個能幫助到你...

webservice 呼叫介面返回值問題

9樓:你一天想說什麼

你試試用object接收之後再轉換型別行不行

10樓:匿名使用者

上面的那個數字應該是http的響應狀態碼吧,webservice的傳輸協議soap所使用的傳輸介質應該是一段兒完整的xml表示式才對。不應該會有未被xml標記包裹的表示式

11樓:匿名使用者

你的帖圖裡是200,不是300

根據這個貼圖,我推測,這個200應該是http狀態碼,200表示成功,

http協議裡200這個成功資訊是放在響應頭資料裡,0才是伺服器的響應內容,你接收時應該只取了響應內容,沒有讀取頭資訊,所以得不到200

事實上,所有的瀏覽器都只顯示訊息內容,不會去顯示200這樣的頭資訊的

如何在c中webservice呼叫方法總結

一騎當後 一 webservice在cs後臺程式中的呼叫 a 通過名稱空間和類名直接呼叫 示例 webservice ws new webservice string s ws.helloworld b 通過新增web引用的方式呼叫,首先新增web引用,通過url指向webservice,指定web...

iPhone6呼叫轉移怎么設定,蘋果6呼叫轉移

來電轉駁業務是指在您的手機不方便接聽 或關機時,將您的來電轉接至其他 上,讓您不錯過每乙個 該功能無月費,您在國內狀態下呼轉至歸屬地號碼0.1元 分鐘,呼轉到非歸屬地號碼0.6元 分鐘,在國際及港澳台漫遊時,使用來電轉駁業務將會產生國際及港澳台漫遊通話費,建議您根據實際需要設定來電轉駁功能。開通後,...

AI中矩形工具不能呼叫成圓角矩形工具是怎麼回事

用圓角矩形工具畫個方框,對著方框單擊修改半徑就可以了,中意的話給10個財富值就可以了呵呵 最島島 把選單欄上的的檢視開啟把顯示邊緣點下,其它的顯示也可以點點,然後用小白工具也就是直接選擇工具拖乙個矩形角,就能顯示這個圓角錨點讓你拖出圓角 芷好 滑鼠左鍵 長按矩形工具 超過2秒鐘 就會出來 不用安裝外...