我正在開發Windows Phone 7.1最低需求的後臺應用程序。它使用asmx webservice。但是我想讓應用程序能夠連接到任何客戶端的服務器。所以我需要每次改變webservice路徑以保持方法相同。有沒有辦法直接在Windows Phone 7中調用websevice而無需添加Web引用?調用WebService不在c#.net框架2.0中添加Web引用Windows Phone 7
示例代碼:
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(Url);
req.Headers.Add("SOAPAction", "\"" + Namespace + methodName + "\"");
req.ContentType = "text/xml;charset=\"utf-8\"";
req.Accept = "text/xml";
req.Method = "POST";
using (Stream stm = req.GetRequestStream())
{
string postValues = "";
if (Convert.ToInt32(Params["number"]) > 0)
{
foreach (var param in Params)
{
if (encode) postValues += string.Format("<{0}>{1}</{0}>", HttpUtility.UrlEncode(param.Key), HttpUtility.UrlEncode(param.Value));
else postValues += string.Format("<{0}>{1}</{0}>", param.Key, param.Value);
}
}
soapStr = string.Format(soapStr, methodName, postValues);
using (StreamWriter stmw = new StreamWriter(stm))
{
stmw.Write(soapStr);
}
}
using (StreamReader responseReader = new StreamReader(req.GetResponse().GetResponseStream()))
{
string result = responseReader.ReadToEnd();
//ResponseSOAP = XDocument.Parse(Utils.UnescapeString(result));
ExtractResult(methodName);
}
錯誤:
'System.Net.WebHeaderCollection' 不包含對 '添加' 的定義和沒有擴展方法 '添加' 接受 第一可以找到'System.Net.WebHeaderCollection'類型的參數(您是否缺少使用指令或程序集引用?)
'系統。 Net.HttpWebRequest'不包含'GetRequestStream'的定義,並且沒有找到接受'System.Net.HttpWebRequest'類型的第一個參數的擴展方法'GetRequestStream'(你是否缺少使用指令或程序集引用?)
你可以通過使用需要URL的HTTP請求來實現這個......我不會建議這個,但是(你必須確保asmx服務是http get和post啓用的。)我寧願建議製作一個他已經擁有的服務.. – Jonny 2015-01-21 10:13:43
@Jonny我開發了一個類,通過它我可以在不添加web引用的情況下調用webservice,因爲windows phone 7使用.net框架2.0,它給了我一些錯誤。檢查以下鏈接 http://www.diogonunes.com/blog/calling-a-web-method-in-c-without-a-service-reference/ – 2015-01-21 10:23:10
@sumit_dev你可以發佈你得到的錯誤嗎?我可以幫忙。我認爲你的課程與鏈接中的代碼相同。 – Jonny 2015-01-21 13:19:20