2016-04-28 72 views
-1

我正在進行其餘的調用,其中包含數據的HttpWebResponse。看起來數據是序列化的,我試圖獲取請求的純文本。我一直在使用Chrome擴展高級休息客戶端,當它調用相同的請求時,它能夠顯示json響應的文本版本。HttpWebResponse文本不會顯示爲JSON

從我讀到的這裏,你需要反序列化到預期的對象。但是,很明顯,chrome插件不知道對象類型,仍然可以打印純文本。

是否有可能在c#中做同樣的事情?

HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest; 

request.Method = "POST"; 
request.ContentType = "application/json"; 

// [code removed for setting json data via stream writer 


using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) 
{ 

    // This is where I am trying to figure out how to get plain readable text out of response.GetResponseStream() 

} 

編輯:如果我只使用一個StreamReader來從響應流中的文本,我得到了一堆二進制數據,而不是簡單的JSON文本。

編輯:意識到這個問題與壓縮有關。這可以關閉。

+0

[JSONResult to String]可能的重複(http://stackoverflow.com/questions/4571985/jsonresult-to-string) – MethodMan

+0

我投票結束這個問題作爲題外話,因爲我的方式關閉問題是什麼。我不相信這會對未來的人們有所幫助。 – JeremyK

+0

然後只是刪除問題 – MethodMan

回答

1

原來我的問題是由於壓縮。我意識到包含「Content-Encoding:gzip」的頭文件,所以我搜索瞭如何使用gzip壓縮進行解壓縮,然後文本是正確的json。謝謝所有

+0

您能否將此答案標記爲已接受?也爲未來的讀者:http://stackoverflow.com/questions/839888/httpwebrequest-native-gzip-compression – Rob

+1

@rob是要一旦2天的要求通過。我明天開始工作時會更新實際的代碼。 – JeremyK

3

我不知道,如果這樣做是正確的,但你能得到的迴應作爲一個字符串這樣做:

using (var sr = new StreamReader(response.GetResponseStream())) 
{ 
    text = sr.ReadToEnd(); 
} 
+0

我得到什麼似乎是序列化的二進制數據,當我這樣做。 – JeremyK

+0

這個答案可能會有幫助。你已經檢查過了嗎? http://stackoverflow.com/questions/3142495/deserialize-json-into-c-sharp-dynamic-object/3806407#3806407 – cristianorbs

+0

想通了,實現了頭包括gzip作爲編碼。必須解壓縮它。 – JeremyK