从技术上讲,我正在问一个写VB的朋友的问题,但我发布了C#,因为有更多的人在上面.我个人也不知道.
我正在帮他连接到Mobile Backend即服务,虽然他设置的方式是代表有人用ASP.net加载他自己的网页(我想).
我正在使用Python连接到服务.但他得到了422服务器响应.我想比较他和我之间的请求标题和内容差异.
根据Chris Doggett 在此页面下方的帖子,在实际发送请求之前,您无法获取标题.但是,一旦request.GetResponse()调用,Visual Studio(或Express,不确定)似乎只是停在那里的断点,并说在浏览器上有422错误和一些错误消息.所以,他无法到达他希望打印标题的下一行.
两个问题:
该Create方法将返回一个HttpWebRequesthttp/https url.在422个状态码表明您在某种程度上形成不正确的数据发送到服务器.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();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4782 次 |
| 最近记录: |