日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HttpWebRequest与HttpWebResponse进行数据采集时的注意点

發布時間:2023/12/31 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HttpWebRequest与HttpWebResponse进行数据采集时的注意点 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


? 一般的數據采集使用WebClient可以很方便的進行,但是一些比較復雜(指需要較多的設置請求標頭,以及重定向)的采集一般會使用HttpWebRequest或HttpWebResponse.

? 在需要給當前請求附加Cookie時,一般可以使用
?request.Headers.Add("Cookie", "ASPXSESSION=12345");
?或者 使用類似下面的語句
????????????? ?CookieCollection cookies = container.GetCookies(logUri);
??????????????? request.CookieContainer = new CookieContainer();
??????????????? foreach (Cookie cookie in cookies)
??????????????? {
??????????????????? cookie.Domain = dataUri.Host; //使用目標數據頁的主機部分
??????????????????? request.CookieContainer.Add(cookie);
??????????????? }
?當然多數情況下我們會使用前一種, 需要注意的是同時設置這兩個屬性時,后一種?request.CookieContainer = new CookieContainer(); 會屏蔽掉前一種, 同時響應流中的resposne.Cookies可用, 使用Headers.Add("xxxxx")方式時,
你無法通過過response.Cookies 獲取返回的Cookie信息(Session標志等), 不過兩種方式多可以通過resposne.Headers["Set-Cookie"]獲取返回的Cookie(session標志等)

使用 HttpWebRequest與HttpWebResponse獲取Session標志
//注意當value中包含如 "&","=","+"時需要使用,
//HttpUtility.UrlEncode( "+++xxx為什么不編碼也可以",Encoding.GetEncoding("GB2312"))?進行編碼
//HttpUtility.UrlEncode(string) 默認使用UTF-8進行編碼
????????? byte[] data = Encoding.GetEncoding("GB2312").GetBytes("name1=value1&name2=value2&name3=value3");
??????????? HttpWebRequest request = HttpWebRequest.Create("http://www.xxx.com/Login.jsp") as HttpWebRequest;
??????????? request.AllowAutoRedirect = false;//禁止自動重定向
??????????? request.Method = "POST"; //使用post方法
??????????? request.ContentType = "application/x-www-form-urlencoded";//form提交時使用urlencode
??????????? request.ContentLength = data.Length;
??????????? //添加Cookie如果有必要
??????????? request.Headers.Add("Cookie", "ASPXSESSION=12345");
??????????? Stream uploadStream = request.GetRequestStream();
??????????? uploadStream.Write(data, 0, data.Length); //發送表單數據
??????????? uploadStream.Close();
??????????? HttpWebResponse resposne = request.GetResponse() as HttpWebResponse;
?????????? ?? StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("gb2312"));
????????? //獲取反回的頁面內容
??????????? string html = sr.ReadToEnd();

??????????? resposne.Close();
?????????? //獲取Cookie(Session標志等) Jsp一般為JSESSIONID=DA205A5E8FA2CE1CC39F3DA94076CF4F
??????????? string session = resposne.Headers["Set-Cookie"];
??????????? resposne.Close();

總結

以上是生活随笔為你收集整理的HttpWebRequest与HttpWebResponse进行数据采集时的注意点的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。