我已經爲電話應用程序編寫了RESFful服務。 我不確定我做錯了什麼?我試圖用多種內容類型設置來測試它,但沒有運氣。 來自手機應用程序的數據即將以以下格式編碼。 PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiPjxzYW1scDpTdGF0dXM + PHNhbWxwOlN0YXR1c0NvZGU + aGVyVmFsdWU + PC94ZW5jOkNpcGhlckRhdGE + PC94ZW5jOkVuY3J5cHRlZERhdGE + PC9zYW1sOkVuY3J5cHRlZEFzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPg ==「;Restful wcf服務錯誤'無法使用根名稱反序列化XML正文
這是接口的定義:
[OperationContract]
[WebInvoke]
String GetUserInfo(String authenticateRequest);
我得到錯誤:與下面的測試代碼
「無法。使用根名'Binary'和根名稱空間''(用於操作'GetMobileCheckCapture'和契約('IMobileCC','http://tempuri.org/'))來反序列化XML主體usin摹的DataContractSerializer
這是我正在試圖測試服務: 字符串encryptedSAML =
PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiPjxzYW1scDpTdGF0dXM + PHNhbWxwOlN0YXR1c0NvZGU + aGVyVmFsdWU + PC94ZW5jOkNpcGhlckRhdGE + PC94ZW5jOkVuY3J5cHRlZERhdGE + PC9zYW1sOkVuY3J5cHRlZEFzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPg ==「;
HttpWebRequest req = WebRequest.Create("http://localhost/Services/Mservice.svc/GetUserInfo") as HttpWebRequest;
req.KeepAlive = false;
req.Method = "POST";
req.ContentType = "text/xml; encoding='utf-8'";
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] bDataToPass = encoding.GetBytes(encryptedSAML);
req.ContentLength = bDataToPass.Length;
using (Stream dataStream = req.GetRequestStream())
{
dataStream.Write(bDataToPass, 0, bDataToPass.Length);
}
try
{
using (WebResponse webresponse = req.GetResponse())
{
StreamReader reader = null;
string responses = "";
string StatusDescription = ((HttpWebResponse)webresponse).StatusDescription;
if (((HttpWebResponse)webresponse).StatusCode != HttpStatusCode.OK)
{
// Console.Write();
}
reader = new StreamReader(webresponse.GetResponseStream());
responses = reader.ReadToEnd();
XmlDocument xmldoc = new XmlDocument();
xmldoc.LoadXml(responses.Replace("&", "&"));
response = xmldoc;
}
}
catch (WebException e)
{
using (WebResponse response2 = e.Response)
{
HttpWebResponse httpResponse = (HttpWebResponse)response2;
Console.WriteLine("Error code: {0}", httpResponse.StatusCode);
using (Stream data = response2.GetResponseStream())
{
string text = new StreamReader(data).ReadToEnd();
Console.WriteLine(text);
}
}
}
該字符串看起來是Base64編碼的。 – 2012-02-14 12:42:37
是的,這是正確的,但參數預計在這種格式我在wcf級別的處理解碼,但我無法測試它。 – user228777 2012-02-14 12:48:23