2012-03-10 109 views
2

我有一個客戶端程序從WCF休息服務獲取httpresponsemessage。我不能在我的生活中閱讀那個迴應的內容。它在內容中簡單地說「流式數據內容」,內容長度爲0,內容類型爲「」。從HttpResponseMessage.Content讀取流內容

我試過ReadAsStream(),並試圖把流轉換成一個XML文檔,但我得到一個錯誤,說根節點丟失。

我試過使用WebClient,但我不知道要在標題中放什麼。

有人知道如何處理我的響應消息內容中的「流式數據內容」?

回答

3

有幾個問題可能會出現。

讀取XML

我不知道是否ReadAsStream會爲XmlDocument的工作,但如果你能使用的XDocument它變得更容易得。無論如何,如果WCF rest服務返回XML以外的其他內容,則需要處理該問題。例如

var stream = response.Content.ReadAsStream(); 
using (var reader = XmlReader.Create(stream)) 
{ 
    XDocument.Load(reader); 
} 

頭VS身體

第二個問題可能與所生成的響應方式。查詢完成後,您可以指定是否只讀取標題,或者是否應讀取整個正文。由於內容長度爲零,這意味着您正在獲取未知大小的流。您需要以這種方式處理流 - 將其加載到可以正確使用流的東西中。

您不應該需要使用WebClient,因爲HTTP庫是針對這個東西製作的。

埃裏克

1

對於那些使用async - 參見下面的例子:

HttpResponseMessage response = await task.ExecuteAsync(new CancellationToken()); 
var yourObject = (YourObject)new XmlSerializer(typeof(YourObject)).Deserialize(new StreamReader(await response.Content.ReadAsStreamAsync()));