从技术上讲,我正在问一个写VB的朋友的问题,但我发布了C#,因为有更多的人在上面。我个人也不知道。
我正在帮助他连接到Mobile Backend即服务,虽然他设置的方式是代表有人用ASP.net加载他自己的网页(我认为)。
我正在使用Python连接到服务。但他得到了422服务器响应。我想比较请求标题和&他和我之间的内容差异。
根据下面的Chris Doggett的post on this page,在实际发送请求之前,您无法获取标头。但是,只要调用request.GetResponse()
,Visual Studio(或Express,不确定)似乎只是停在那里的断点,并说在浏览器上有422错误和一些错误消息。因此,他无法到达他希望打印标题的下一行。
两个问题:
答案 0 :(得分:5)
Create
方法将为http / https网址返回HttpWebRequest
。 422 status code表示您以某种方式向服务器发送了错误的格式化数据。 GetResponse()
会抛出WebException
,因为您没有收到
状态代码200
。
要获取处理异常所需的响应的实际标题
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();
}