【问题标题】:How to show value of httpwebresponse(JSON) in MessageBox?如何在 MessageBox 中显示 httpwebresponse(JSON) 的值?
【发布时间】:2018-04-10 14:57:12
【问题描述】:

如何在 MessageBox 中显示 httpwebresponse 的值? 我创建了 webreq,其中我得到的响应是一个 json。

{ "quiz": { "sport": { "q1": { "question": "Which one is correct team name in NBA?", "options": [ "New York Bulls", "Los Angeles Kings", "Golden State Warriros", "Huston Rocket" ], "answer": "Huston Rocket" } }, "maths": { "q1": { "question": "5 + 7 = ?", "options": [ "10", "11", "12", "13" ], "answer": "12" }, "q2": { "question": "12 - 8 = ?", "options": [ "1", "2", "3", "4" ], "answer": "4" } } } }

我想在 MessageBox 中显示此响应 这是我的 C# 代码

        //Removed Main code
        request.ContentType = "application/x-www-form-urlencoded";
        request.ContentLength = data.Length;
        using (var stream = request.GetRequestStream())
        {
            stream.Write(data, 0, data.Length);
        }
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        WebHeaderCollection header = response.Headers;
        var encoding = ASCIIEncoding.ASCII;
        using (var reader = new System.IO.StreamReader(response.GetResponseStream(), encoding))
        {
            string responseText = reader.ReadToEnd();
            System.Windows.Forms.MessageBox.Show(responseText);
        }

当我试图展示它时,它会像这样显示一些符号 Before Opening Fiddler

当我打开 fiddler 并运行 C# 代码时,它会正确显示为什么? After Opening Fiddler 如何解决?

【问题讨论】:

  • request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;?
  • @john 在哪里应用这个?
  • ...在您致电 request.GetRequestStream() 之前,应您的要求。假设是压缩问题。
  • @john 非常感谢它起作用了 :) 这是因为响应是使用 GZip 压缩的??
  • 是的。明天我会添加一个答案。

标签: c# httpwebrequest response fiddler


【解决方案1】:

该网站似乎正在使用压缩来处理您的请求,而 Fiddler 正在删除该请求。

您可以让HttpWebRequest为您自动解压回复:

request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;

所以你的完整代码是:

//Removed Main code
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
using (var stream = request.GetRequestStream())
{
    stream.Write(data, 0, data.Length);
}
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
WebHeaderCollection header = response.Headers;
var encoding = ASCIIEncoding.ASCII;
using (var reader = new System.IO.StreamReader(response.GetResponseStream(), encoding))
{
    string responseText = reader.ReadToEnd();
    System.Windows.Forms.MessageBox.Show(responseText);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-29
    • 1970-01-01
    • 2011-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    相关资源
    最近更新 更多