C# HttpWebRequest BeginGetResponse不工作
我正在尝试使用HttpWebRequest,我的BeginGetRequestStream可以工作,但它从未进入BeginGetResponse函数,我不知道为什么。。我搜索了几个小时,没有找到一个有效的解决方案C# HttpWebRequest BeginGetResponse不工作,c#,asynchronous,httpwebrequest,httprequest,httpwebresponse,C#,Asynchronous,Httpwebrequest,Httprequest,Httpwebresponse,我正在尝试使用HttpWebRequest,我的BeginGetRequestStream可以工作,但它从未进入BeginGetResponse函数,我不知道为什么。。我搜索了几个小时,没有找到一个有效的解决方案 public void Initialize(IScheduler scheduler) { if(_isCloud) { HttpWebRequest request = (HttpWebRequest)WebR
public void Initialize(IScheduler scheduler)
{
if(_isCloud)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(_cloudMappingServer + "/Mapping/GetAllCentralPoints");
request.ContentType = "application/x-www-form-urlencoded";
request.Method = "POST";
request.BeginGetRequestStream(new AsyncCallback(ReleaseReadCallback), request);
// Instruct the thread to wait until we resume it
_waitHandle.WaitOne();
_waitHandle.Dispose();
}
}
private void ReleaseReadCallback(IAsyncResult asynchronousResult)
{
try
{
HttpWebRequest httpRequest = (HttpWebRequest)asynchronousResult.AsyncState;
using (Stream postStream = httpRequest.EndGetRequestStream(asynchronousResult))
{
using (MemoryStream memStream = new MemoryStream())
{
string queryString = string.Empty;
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(queryString);
memStream.Write(bytes, 0, bytes.Length);
memStream.Position = 0;
byte[] tempBuffer = new byte[memStream.Length];
memStream.Read(tempBuffer, 0, tempBuffer.Length);
postStream.Write(tempBuffer, 0, tempBuffer.Length);
}
}
httpRequest.BeginGetResponse(new AsyncCallback(ReleaseResponseCallback), httpRequest);
}
catch (Exception ex)
{
var test = ex;
}
}
private void ReleaseResponseCallback(IAsyncResult asynchronousResult)
{
HttpWebRequest responseRequest = (HttpWebRequest)asynchronousResult.AsyncState;
string responseString = string.Empty;
try
{
using (HttpWebResponse resp = (HttpWebResponse)responseRequest.EndGetResponse(asynchronousResult))
{
using (StreamReader streamRead = new StreamReader(resp.GetResponseStream()))
{
responseString = streamRead.ReadToEnd();
try
{
JsonSerializerSettings settings = new JsonSerializerSettings();
List<CentralPointViewModel> _allCentralPointViewModel = JsonConvert.DeserializeObject<List<CentralPointViewModel>>(responseString, settings);
}
catch (JsonReaderException)
{
responseString = responseString.Replace('\"'.ToString(), string.Empty);
string[] responseArray = responseString.Split(';');
}
catch (JsonSerializationException)
{
responseString = responseString.Replace('\"'.ToString(), string.Empty);
}
}
}
}
catch (Exception ex)
{
}
}
public void初始化(isScheduler调度程序)
{
如果(_isCloud)
{
HttpWebRequest request=(HttpWebRequest)WebRequest.Create(_cloudMappingServer+“/Mapping/GetAllCentralPoints”);
request.ContentType=“application/x-www-form-urlencoded”;
request.Method=“POST”;
BeginGetRequestStream(新的AsyncCallback(ReleaseReadCallback),request);
//指示线程等待,直到我们恢复它
_waitHandle.WaitOne();
_waitHandle.Dispose();
}
}
私有void ReleaseReadCallback(IAsyncResult asynchronousResult)
{
尝试
{
HttpWebRequest httpRequest=(HttpWebRequest)asynchronousResult.AsynchState;
使用(Stream postStream=httpRequest.EndGetRequestStream(asynchronousResult))
{
使用(MemoryStream memStream=new MemoryStream())
{
string queryString=string.Empty;
byte[]bytes=System.Text.Encoding.UTF8.GetBytes(queryString);
memStream.Write(字节,0,字节.长度);
memStream.Position=0;
byte[]tempBuffer=新字节[memStream.Length];
memStream.Read(tempBuffer,0,tempBuffer.Length);
Write(tempBuffer,0,tempBuffer.Length);
}
}
httpRequest.BeginGetResponse(新的异步回调(ReleaseResponseCallback),httpRequest);
}
捕获(例外情况除外)
{
var检验=ex;
}
}
私有无效释放响应回调(IAsyncResult asynchronousResult)
{
HttpWebRequest响应请求=(HttpWebRequest)asynchronousResult.AsynchState;
string responseString=string.Empty;
尝试
{
使用(HttpWebResponse resp=(HttpWebResponse)responseRequest.EndGetResponse(asynchronousResult))
{
使用(StreamReader streamRead=new StreamReader(resp.GetResponseStream())
{
responseString=streamRead.ReadToEnd();
尝试
{
JsonSerializerSettings设置=新建JsonSerializerSettings();
列表_allCentralPointViewModel=JsonConvert.DeserializeObject(responseString,设置);
}
捕获(JsonReaderException)
{
responseString=responseString.Replace(“\”.ToString(),string.Empty);
字符串[]responseArray=responseString.Split(“;”);
}
捕获(JsonSerializationException)
{
responseString=responseString.Replace(“\”.ToString(),string.Empty);
}
}
}
}
捕获(例外情况除外)
{
}
}
它从未进入ReleaseResponseCallback功能!我能够进行服务器呼叫,但响应从未到达我的手中,或者我没有正确地接收到响应。。如果您已经检查了方法ReleaseReadCallback中是否存在异常,我们将不胜感激。目前,您有一个空的捕获,可以容纳任何异常。@DonJayamanne我实际上输入了一个错误!它进入ReleaseReadCallback并执行良好,从不输入catch,然后正确地执行我的请求。我从未从我的请求中得到响应-它从未进入ReleaseResponseCallback