我有一个Android手机应用程序,我想发送webrequest到服务器发布一些数据,但在发布数据之前,我发送一个http获取请求来获取一些数据,然后发送POST请求, 第一我收到顺利拿到,但是当我发送POST请求它抛出异常波纹管在此线路上我的代码requestStream.Write(bytes, 0, bytes.Length);
Xamarin Android httpwebrequest,无法访问处置对象
的例外是:
System.ObjectDisposedException:无法访问已释放目的。 对象名称:'System.Net.Sockets.NetworkStream'。
,这里是我的GET和POST请求的代码 GET:
public void GetTokenInfo()
{
try
{
var uri = new Uri(string.Format(_host + "webserver/SesTokInfo", string.Empty));
var webRequest = WebRequest.Create(uri);
using (var response = webRequest.GetResponse() as HttpWebResponse)
{
using (var requestStream = response.GetResponseStream())
{
using (var reader = new StreamReader(requestStream))
{
var content = reader.ReadToEnd();
XmlDocument xDocument = new XmlDocument();
xDocument.LoadXml(content);
XmlElement root = xDocument.DocumentElement;
if (IsResponseReturned(root))
{
GlobalConfig.SessionId = root.GetElementsByTagName("SesInfo")[0].InnerText;
GlobalConfig.Token = root.GetElementsByTagName("TokInfo")[0].InnerText;
}
}
}
}
}
catch (Exception exception)
{
Debug.WriteLine(exception);
}
}
与此代码我收到收到我的结果是没有任何问题的,这里是我的帖子:
public WebResponse PostData(string body, string url)
{
WebResponse webResponse = null;
try
{
var uri = new Uri(string.Format(_host + url, string.Empty));
var webRequest = (HttpWebRequest)WebRequest.Create(uri);
webRequest.Headers.Add("Cookie",
GlobalConfig.SessionId);
webRequest.Headers.Add("_RequestVerificationToken", GlobalConfig.Token);
webRequest.Method = "POST";
webRequest.ContentType = "application/xml";
byte[] bytes = Encoding.UTF8.GetBytes(body);
webRequest.ContentLength = bytes.Length;
Stream requestStream = webRequest.GetRequestStream();
requestStream.Write(bytes, 0, bytes.Length);
webResponse = webRequest.GetResponse();
}
catch (Exception exception)
{
Console.WriteLine(exception);
}
return webResponse;
}
我已经搜索和尝试的方式,但我没有得到的解决方案,加上当我评论第一个功能,只运行第二个功能,它会正常工作,但是当我运行第一个,然后第二个引发异常,什么都属于从第一个代码处置流和Web响应?我认为使用声明已经配置它们。
任何帮助表示赞赏。
感谢您的回答,是我的设备con在我调用GetResponse之前,它会引发异常requestStream.Write(bytes,0,bytes.Length);当我写字节,它工作时,我只运行第二种方法,但是当我第一次运行第一种方法,然后第二种方法时,它会抛出异常,任何想法? –