因此,我对C#相当陌生,但我也使用过其他语言。目前,我正在编写一个定制的MineCraft启动程序。我正在使用Yggdrasil身份验证文档来帮助我做到这一点。它说:如果请求成功,服务器将响应:
但是,如果请求失败,服务器将响应:
我已经解决了第一部分,但第二部分是问题所在!
HttpWebResponse httpResponse = null;
try
{
httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (StreamReader streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
string result = streamReader.ReadToEnd();
Console.WriteLine(result);
}
}
catch (WebException e)
{
Console.WriteLine(e.ToString());
}正如您所看到的,如果发生了一个WebException,例如,我收到了一个403禁止的错误,我无法读取内容。我只需要一个NullReferenceException。
因此,问题是:如果WebResponse失败,如何获得HttpWebRequest?
发布于 2015-04-24 07:44:10
请检查以下方法以获得状态代码。
HttpWebResponse httpResponse = null;
try
{
httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (StreamReader streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
string result = streamReader.ReadToEnd();
Console.WriteLine(result);
}
}
catch (WebException ex)
{
if (ex.Status == WebExceptionStatus.ProtocolError)
{
var response = ex.Response as HttpWebResponse;
if (response != null)
{
Console.WriteLine("HTTP Status Code: " + (int)response.StatusCode);
}
else
{
// no http status code available
}
}
else
{
// no http status code available
}
}发布于 2015-04-24 07:46:13
仍然可以使用WebException.Response属性读取响应内容:
HttpWebResponse httpResponse = null;
try
{
httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (StreamReader streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
string result = streamReader.ReadToEnd();
Console.WriteLine(result);
}
}
catch (WebException e)
{
Console.WriteLine(e.ToString());
string responseText;
using (var reader = new StreamReader(webException.Response.GetResponseStream()))
{
responseText = reader.ReadToEnd();
}
Console.WriteLine("WebException caught. Response text is {0}", responseText);
}发布于 2015-04-24 08:10:17
你可以试试这样的东西:
var response = e.Response as HttpWebResponse;
if (response!=null && response.StatusCode != HttpStatusCode.OK)
{
Console.WriteLine("HTTP Error Code is: " + (int)response.StatusCode);
}https://stackoverflow.com/questions/29841123
复制相似问题