我有一個客戶端程序從WCF休息服務獲取httpresponsemessage。我不能在我的生活中閱讀那個迴應的內容。它在內容中簡單地說「流式數據內容」,內容長度爲0,內容類型爲「」。從HttpResponseMessage.Content讀取流內容
我試過ReadAsStream(),並試圖把流轉換成一個XML文檔,但我得到一個錯誤,說根節點丟失。
我試過使用WebClient,但我不知道要在標題中放什麼。
有人知道如何處理我的響應消息內容中的「流式數據內容」?
我有一個客戶端程序從WCF休息服務獲取httpresponsemessage。我不能在我的生活中閱讀那個迴應的內容。它在內容中簡單地說「流式數據內容」,內容長度爲0,內容類型爲「」。從HttpResponseMessage.Content讀取流內容
我試過ReadAsStream(),並試圖把流轉換成一個XML文檔,但我得到一個錯誤,說根節點丟失。
我試過使用WebClient,但我不知道要在標題中放什麼。
有人知道如何處理我的響應消息內容中的「流式數據內容」?
有幾個問題可能會出現。
讀取XML
我不知道是否ReadAsStream會爲XmlDocument的工作,但如果你能使用的XDocument它變得更容易得。無論如何,如果WCF rest服務返回XML以外的其他內容,則需要處理該問題。例如
var stream = response.Content.ReadAsStream();
using (var reader = XmlReader.Create(stream))
{
XDocument.Load(reader);
}
頭VS身體
第二個問題可能與所生成的響應方式。查詢完成後,您可以指定是否只讀取標題,或者是否應讀取整個正文。由於內容長度爲零,這意味着您正在獲取未知大小的流。您需要以這種方式處理流 - 將其加載到可以正確使用流的東西中。
您不應該需要使用WebClient,因爲HTTP庫是針對這個東西製作的。
埃裏克
對於那些使用async
- 參見下面的例子:
HttpResponseMessage response = await task.ExecuteAsync(new CancellationToken());
var yourObject = (YourObject)new XmlSerializer(typeof(YourObject)).Deserialize(new StreamReader(await response.Content.ReadAsStreamAsync()));