2016-04-28 84 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