所以我需要从一个请求中获得两个响应。 我需要打电话给de webservice的文档,要求我将收到快速的同步响应,此后,它将向我发送缓慢的第二次异步响应。
在我看来,这很奇怪,我无法让.NET等待/收听/轮询第二个响应。
我得到的是以下内容;
public void testCall(object sender, EventArgs e)
{
byte[] xmlIn = Encoding.UTF8.GetBytes("my xml");
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("my url");
request.Method = "POST";
request.ContentType = "application/xml";
using (var dataStream = request.GetRequestStream())
{
dataStream.Write(xmlIn, 0, xmlIn.Length);
}
request.BeginGetResponse(new AsyncCallback(FinishWebRequest), request);
}
private void FinishWebRequest(IAsyncResult result)
{
HttpWebResponse response = (result.AsyncState as HttpWebRequest).EndGetResponse(result) as HttpWebResponse;
using (var stream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
var responseString = reader.ReadToEnd();
Debug.Write(responseString);
Response.Write(responseString);
}
}
现在这适用于第一个响应。.但是我如何获得第二个响应?
答案 0 :(得分:0)
您应该知道,我不认为http是为此用例设计的。也许您可以考虑使用System.Net.Sockets。但是值得尝试使用StreamReader而不处理它(摆脱您的using语句),并在需要时通过打破无限循环并调用StreamReader.Close()手动关闭它。
如果您走无限循环路线,请考虑超时阈值并使用s单独的线程。