Tôi có ứng dụng dành cho thiết bị di động Android và tôi muốn gửi yêu cầu web tới máy chủ để đăng một số dữ liệu, nhưng trước khi đăng dữ liệu, tôi gửi yêu cầu http để nhận một số dữ liệu, sau đó gửi bài yêu cầu, đầu tiên tôi nhận được có được thành công nhưng khi tôi gửi yêu cầu bài nó ném ngoại lệ dưới đây vào dòng này của mã của tôi requestStream.Write(bytes, 0, bytes.Length);
Xamarin httpwebrequest trên Android, Không thể truy cập đối tượng được xử lý
ngoại trừ là:
System.ObjectDisposedException: không thể truy cập vào một thanh lý khoản vật. Tên đối tượng: 'System.Net.Sockets.NetworkStream'.
và đây là GET và POST yêu cầu mã của tôi 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);
}
}
với mã này tôi nhận được kết quả của tôi mà không có vấn đề, và đây là POST của tôi:
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;
}
tôi đã tìm kiếm và thử cách nhưng tôi không nhận được giải pháp, và cộng với khi tôi nhận xét hàm đầu tiên, và chỉ chạy hàm thứ hai, nó sẽ hoạt động tốt nhưng khi tôi chạy đầu tiên và sau đó nó sẽ ném ngoại lệ, có bất kỳ điều gì thuộc về việc xử lý luồng và phản hồi web từ mã đầu tiên không? tôi nghĩ rằng bằng cách sử dụng tuyên bố đã được sắp xếp chúng.
bất kỳ trợ giúp nào được đánh giá cao.
Cảm ơn câu trả lời của bạn, có thiết bị của tôi con nected internet, trước khi tôi nhận được cuộc gọi đến GetResponse nó ném ngoại lệ requestStream.Write (byte, 0, bytes.Length); khi tôi viết các byte, và nó hoạt động khi tôi chỉ chạy phương thức thứ hai, nhưng khi tôi lần đầu tiên chạy phương thức đầu tiên và sau đó phương thức thứ hai nó ném ngoại lệ, bất kỳ ý tưởng nào? –