gpt4 book ai didi

c# - 从 WebRequest 获取 header

转载 作者:行者123 更新时间:2023-12-02 15:34:32 25 4
gpt4 key购买 nike

从技术上讲,我是在向一位编写 VB 的 friend 提问,但我以 C# 的身份发帖,因为有更多人在使用它。我个人也不知道。

我正在帮助他连接到移动后端即服务,尽管他设置的方式是代表使用 ASP.net 加载他自己的网页的人连接它(我认为)。

我正在使用 Python 正常连接到该服务。但他收到了 422 服务器响应。我想比较他和我的请求头和内容的区别。

根据 Chris Doggett 的 post on this page在下面,在实际发送请求之前您无法获取 header 。然而,一旦 request.GetResponse() 被调用,Visual Studio(或 Express,不确定)似乎只是停在那里的一个断点,并说有一个 422 错误和一些错误消息在浏览器上。因此,他无法到达他希望打印标题的下一行。

两个问题:

  1. 是否开启了某种调试?我认为 422 响应仍然是一个响应,程序不应该就此停止。
  2. 如何同时打印出内容,而不仅仅是标题?最好,我想以文本形式打印出整个请求。这些东西以 JSON 格式发送,我认为它不属于 header ,但我不太确定。

最佳答案

Create 方法将为 http/https url 返回一个 HttpWebRequest422 status code表示您以某种方式向服务器发送了不正确的格式数据。 GetResponse() 将抛出 WebException因为你没有收到状态码200

要获取响应的实际 header ,您需要处理异常

private static void Main(string[] args)
{
WebRequest request = WebRequest.Create("http://google.com/12345"); //generate 404

try
{

WebResponse response = request.GetResponse();
}
catch(WebException ex)
{
HttpWebResponse errorResponse = ex.Response as HttpWebResponse;

if (errorResponse == null)
throw; //errorResponse not of type HttpWebResponse

string responseContent = "";

using(StreamReader r = new StreamReader(errorResponse.GetResponseStream()))
{
responseContent = r.ReadToEnd();
}

Console.WriteLine("The server at {0} returned {1}", errorResponse.ResponseUri, errorResponse.StatusCode);

Console.WriteLine("With headers:");
foreach(string key in errorResponse.Headers.AllKeys)
{
Console.WriteLine("\t{0}:{1}", key, errorResponse.Headers[key]);
}

Console.WriteLine(responseContent);
}

Console.ReadLine();
}

关于c# - 从 WebRequest 获取 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20143077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com