根據我的經驗,使用REST風格的Web服務設計和構建Windows Phone應用程序非常簡單。在只有SOAP XML Web服務可以使用的情況下,您需要在應用程序內部完成一些工作,以準備請求,發送請求並解析響應。
您可以將web服務URL作爲一個字符串「模板」像這樣 -
string wsUrlTemplate = "http://mywebservice.com/{0}/servicedosomething";
當你即將發出的請求,只是格式化字符串 -
string wsUrl = string.Format(wsUrlTemplate, webServiceID);
如果你有SOAP XML請求格式,然後將其存儲爲模板。當您需要發出請求時,請用實際值替換佔位符併發送請求(使用POST選項,如果這是Web服務期望的)。一個典型的SOAP XML請求模板可能看起來像 -
string xmlRequestTemplate = "
<?xml version="1.0" encoding="utf-8" ?>
<Customer>
<CustomerID>{0}</Customer>
</Customer>"
準備請求XML,你採取同樣的方法和上面 - 字符串格式xmlRequestTemplate並添加客戶ID。要發出請求,請使用HttpWebRequest異步發出請求,並在響應處理程序中解析XML響應。
var request = HttpWebRequest.Create(wsUrl);
var result = (IAsyncResult)request.BeginGetResponse(ResponseCallback, request);
private void ResponseCallback(IAsyncResult result)
{
var request = (HttpWebRequest)result.AsyncState;
var response = request.EndGetResponse(result);
using (var stream = response.GetResponseStream())
using (var reader = new StreamReader(stream))
{
var contents = reader.ReadToEnd();
// Parse the XML response
}
}
希望這給你一些想法繼續。
indyfromoz
它的確如此。我現在開始工作了。謝謝!你知道如何在請求btw中放一個頭文件嗎?我正在嘗試,但我不斷收到錯誤。我是新手,所以我不知道從哪裏開始尋找。我得到「'POST'標題不能直接修改,當我這樣做request.Headers [」POST「] = headerString; – Carlo 2010-10-22 18:44:55
嗨,卡洛,我相信你可以像這樣設置標頭 - request.Headers [」Accept「] = 「application/json」;我不認爲你可以在請求頭中修改POST/GET/etc - indyfromoz – indyfromoz 2010-10-23 08:16:37