目前状况:有一服务器通过HTTP服务向外发送实时服务器状态,如果用IE可以很好的观察到服务器状态。 现在有需求要求改写成一个windows应用程序(服务器端不能动)。我使用抓包程序观察了一下,IE发送一个get请求后,服务器就不停的将状态返回,同时客户端没有在次发送其它请求。我想使用HttpWebRequest 和HttpWebResponse来模拟这个过程,程序如下。程序在req1.GetResponse(); 阻止了9秒后返回,但返回值只有服务器发的4个状态,同时观察服务器还在向客户端发送数据,并显示客户端已接收,客户端采用抓包程序也可看到服务器传送来的数据已接收。但由于GetResponse已返回,不能得到后续包。
另外,GetResponse是接收完所有数据后返回,但现在这种情况服务器始终发送数据,没有完的时候。而且接收的数据要求及时处理并显示,不知道该怎么办才好。
那位给指点一二!
private void httpGet(string URI, CookieContainer cc)
{
HttpWebRequest req1 = (HttpWebRequest)WebRequest.Create(URI);
req1.Method = "GET";
req1.Accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*";
req1.Headers["Accept-Language"] = "zh-cn";
req1.Headers["Accept-Encoding"] = "gzip, deflate";
req1.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Maxthon; EmbeddedWB 14.52; baiduds; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
req1.KeepAlive = true;
req1.CookieContainer = cc; resp1 = (HttpWebResponse)req1.GetResponse();
cc.Add(resp1.Cookies);
StreamReader sr1 = new StreamReader(resp1.GetResponseStream(), Encoding.Default);
}
另外,GetResponse是接收完所有数据后返回,但现在这种情况服务器始终发送数据,没有完的时候。而且接收的数据要求及时处理并显示,不知道该怎么办才好。
那位给指点一二!
private void httpGet(string URI, CookieContainer cc)
{
HttpWebRequest req1 = (HttpWebRequest)WebRequest.Create(URI);
req1.Method = "GET";
req1.Accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*";
req1.Headers["Accept-Language"] = "zh-cn";
req1.Headers["Accept-Encoding"] = "gzip, deflate";
req1.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Maxthon; EmbeddedWB 14.52; baiduds; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
req1.KeepAlive = true;
req1.CookieContainer = cc; resp1 = (HttpWebResponse)req1.GetResponse();
cc.Add(resp1.Cookies);
StreamReader sr1 = new StreamReader(resp1.GetResponseStream(), Encoding.Default);
}
我一般是这样做的:var xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
xmlhttp.open("Post","http://localhost/test/save.asp", false);
xmlhttp.setRequestHeader("Content-Type","text/XML")
xmlhttp.setRequestHeader("Content-Type","gb2312")
xmlhttp.send(xmlDoc);
//服务器端接受
save.asp:
<%@Language="JAVASCRIPT"%>
<%
Response.Expires=-1000;
var doc=Server.CreateObject("MsXML2.DOMDocument"); doc.load(Request);
doc.save(Server.MapPath("save.xml"));
%> 不过我这个方法总觉得不是很好,只是客户端到服务器端交互,而不能在从服务器端返回到客户端,如果实现了就好了!
这应该就要Ajax处理更好点!