这两天在做一个小程序,客户端通过HTTP间隔一定时间去访问服务器,在第一次连接服务器时进行初始化,之后的连接需要用到Cookie,通过服务器端的Cookie来判断连接的合法性。折腾了很长时间都没有搞定,今天终于搞定了,主要是从“C# HttpWebRequest保存cookies模拟登录的方法!”这篇文章找到答案,记录如下,原文。
CookieContainer cookies = new CookieContainer();
string url = "http://www.google.com.hk/";
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
myHttpWebRequest.Timeout = 20 * 1000; //连接超时
myHttpWebRequest.Accept = "*/*";
myHttpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0;)";
myHttpWebRequest.CookieContainer = new CookieContainer(); //暂存到新实例
myHttpWebRequest.GetResponse().Close();
cookies = myHttpWebRequest.CookieContainer; //保存cookies
string cookiesstr = myHttpWebRequest.CookieContainer.GetCookieHeader(myHttpWebRequest.RequestUri); //把cookies转换成字符串
url = "http://www.google.com.hk/search?oe=utf8&ie=utf8&source=uds&hl=zh-CN&q=3g";
myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
myHttpWebRequest.Timeout = 20 * 1000; //连接超时
myHttpWebRequest.Accept = "*/*";
myHttpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0;)";
myHttpWebRequest.CookieContainer = cookies; //使用已经保存的cookies 方法一
//myHttpWebRequest.Headers.Add("Cookie", cookiesstr); //使用已经保存的cookies 方法二
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
Stream stream = myHttpWebResponse.GetResponseStream();
stream.ReadTimeout = 15 * 1000; //读取超时
StreamReader sr = new StreamReader(stream, Encoding.GetEncoding("utf-8"));
string strWebData = sr.ReadToEnd();
richTextBox1.Text = cookiesstr +"\r\n\r\n"+ strWebData;
在此感谢原文的作者。
本文分享了如何在小程序中使用C#语言通过HTTP请求实现与服务器交互,包括初始化连接、使用Cookie验证连接合法性的过程。通过实例代码演示了如何创建HttpWebRequest对象、设置参数、发送请求并获取响应,最终解析并展示服务器返回的数据。
162

被折叠的 条评论
为什么被折叠?



