C# 获取http状态返回ObjectDisposedException
我正在尝试从http响应返回状态代码,如下所示:C# 获取http状态返回ObjectDisposedException,c#,json,C#,Json,我正在尝试从http响应返回状态代码,如下所示: try { HttpWebRequest request = WebRequest.Create(requestURI) as HttpWebRequest; string text using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) using (var responseStream = new StreamRe
try
{
HttpWebRequest request = WebRequest.Create(requestURI) as HttpWebRequest;
string text
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
using (var responseStream = new StreamReader(response.GetResponseStream()))
{
text = responseStream.ReadToEnd();
}
var responseHeader = (HttpWebResponse)request.GetResponse();
var status = responseHeader.StatusCode;
}
catch (WebException ex)
{
MessageBox.Show(ex.ToString());
}
问题是我遇到了以下异常:
System.ObjectDisposedException:“无法访问删除的对象名称:'System.Net.HttpWebResponse'。”
在这一行:var status=responseHeader.StatusCode代码>
为什么会这样?我想得到状态码和描述
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
将在离开using块后处理响应
因此,对(HttpWebResponse)request.GetResponse()的另一个调用代码>将引发异常。此外,因为它是一个web响应,所以您不能读取它两次
尝试以下替代方案:
HttpWebRequest request = WebRequest.Create(requestURI) as HttpWebRequest;
string text;
HttpStatusCode status;
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
using (var responseStream = new StreamReader(response.GetResponseStream()))
{
text = responseStream.ReadToEnd();
status = response.StatusCode;
}
将在离开using块后处理响应
因此,对(HttpWebResponse)request.GetResponse()的另一个调用代码>将引发异常。此外,因为它是一个web响应,所以您不能读取它两次
尝试以下替代方案:
HttpWebRequest request = WebRequest.Create(requestURI) as HttpWebRequest;
string text;
HttpStatusCode status;
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
using (var responseStream = new StreamReader(response.GetResponseStream()))
{
text = responseStream.ReadToEnd();
status = response.StatusCode;
}
实际上调用dispose过于频繁的少数例外情况之一:-)您缺少一个“;”在'string text'之后,实际上经常调用dispose的少数异常之一:-)缺少一个';'在'string text'之后,但是如果我想使用变量status
也可以使用?我该怎么做?您可以将声明带到using语句之外,就像您对text
所做的那样我会更新答案,但我不确定返回类型。嗯,好的,但是HttpReturnStatus
用红色下划线,没有参考发现嗯,是的,正如我所说,我不知道类型
;-),它是HttpStatusCode
btw;我编辑了它。看起来像一个字符串
:但是如果我想使用变量status
也可以使用它吗?我该怎么做?您可以将声明带到using语句之外,就像您对text
所做的那样我会更新答案,但我不确定返回类型。嗯,好的,但是HttpReturnStatus
用红色下划线,没有参考发现嗯,是的,正如我所说,我不知道类型
;-),它是HttpStatusCode
btw;我编辑了它。看起来像一个字符串: