【问题标题】:Winforms: InvalidOperationException while trying to send an HTTP request to FacebookWinforms:尝试向 Facebook 发送 HTTP 请求时出现 InvalidOperationException
【发布时间】:2022-06-23 03:26:58
【问题描述】:

我正在尝试构建一个类似于 Postman 的应用程序。基本上,用户可以输入 URL 并发送不同类型的请求(GETPOST 等)。一开始,我正在尝试实现 GET 并确保它正常工作。

我允许用户输入一个 URL,单击按钮将触发我的 RequestService.GetRequest() 方法,如下所示:

public static async Task GetRequest(string url, RichTextBox ResponseRichTextBox, Label StatusCodeLabel)
        {
            string response = "";

            var client = new HttpClient();
            client.DefaultRequestHeaders.Add("User-Agent", "C# program");
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            var resultContent = await client.GetStringAsync(url);
            var resultStatusCode = await client.GetAsync(url);

            Console.WriteLine("Output: " + resultContent.ToString());

            ResponseRichTextBox.Text = resultContent.ToString();

            if (resultStatusCode.IsSuccessStatusCode)
                StatusCodeLabel.Parent.BackColor = Color.MediumSeaGreen;
            else StatusCodeLabel.Parent.BackColor = Color.Crimson;

            StatusCodeLabel.Parent.Show();
            StatusCodeLabel.Text = resultStatusCode.StatusCode.ToString();
        }

向 Google 等网站发送请求或使用 GitHub (https://api.github.com/users/.../repos) 等 API 时,一切似乎都运行良好。我通过提供的 RichTextBox 正确接收数据。问题在于尝试向 Facebook 发送请求时。我一直在尝试通过 Postman 发送它,它似乎可以工作(它返回一个 HTML 页面),但使用我的应用程序实际上不会这样做。它甚至不输出一些消息。甚至没有告诉我发生了异常。

我一直在调试代码,在查看 Visual Studio 中的 Output 选项卡时,我看到了这个(在向 https://facebook.com 发送请求后立即):

Exception thrown: 'System.InvalidOperationException' in mscorlib.dll

老实说,我不确定为什么会这样。以为我错过了一些标题,但我不确定我是否正确(或者我应该添加/删除哪些标题)。

【问题讨论】:

    标签: c# winforms dotnet-httpclient


    【解决方案1】:

    我的问题here 似乎找到了答案。

    GetStringAsync 似乎在响应中不支持 iso-8859,并且 基本上你无能为力。所以你需要从 取而代之的是 GetAsync。请务必清除您现有的标题或它 可能仍然会失败。以下适用于您提供的网址 (虽然我使用的是 ISO-8859-1 而不是 2): [...]

    现在仅使用 resultStatusCode 允许发送所有类型的请求,并且还会显示错误响应 (4XX),如果是这样的话。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-15
      • 1970-01-01
      • 1970-01-01
      • 2020-11-20
      • 1970-01-01
      • 2020-09-18
      • 1970-01-01
      相关资源
      最近更新 更多