我正在进行休息调用,其中我得到一个包含数据的HttpWebResponse。似乎数据是序列化的,我试图得到请求的纯文本。我一直在使用chrome扩展Advanced Rest客户端,在调用相同的请求时,它能够显示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 :(得分:3)
我不确定是否正确,但您可以将响应作为字符串执行此操作:
using (var sr = new StreamReader(response.GetResponseStream()))
{
text = sr.ReadToEnd();
}
答案 1 :(得分:1)
原来我的问题是由于压缩造成的。我意识到标题包含“Content-Encoding:gzip”,所以我搜索了如何用gzip压缩解压缩然后文本是正确的json。谢谢大家