您好,登錄后才能下訂單哦!
搞Asp.net的朋友,難免會有需要發送一些http請求,網頁數據抓取的時候! 有一些安全性相對做得比較好點的站點,某些東西做得相對比較“安全”!! 對于做WINDOWS平臺下開發的朋友來說,了解windows原理,一些window的API、 這會大大提示您的編程效率,我個人覺得,用好 Window API 非常的有必要,也是程序員的必備知識 wininet.dll ----------------------------------------------------------------------------------------- 搞C,C++的程序員,不會陌生吧、這個組件概而言之 就是對 internet ,ftp , http 底層做基礎封裝的編程接口!!!!!! ///<summary> /// 獲取Cookie的方法類。 ///</summary> public class CookieUtility { ///url :你請求的站點地址、 ///cookieName:cookie名稱,獲取全部cookie傳null、 ///cookieData:cookie數據保存對象,數據會保存到這個對象中。 ///size:獲取到的實際數據大小。 [DllImport("wininet.dll", SetLastError = true)] public static extern bool InternetGetCookie(string url, string cookieName, StringBuilder cookieData, ref int size); ///url :你請求的站點地址、 ///cookieName:cookie名稱,獲取全部cookie傳null、(建議傳null) ///cookieData:cookie數據保存對象,數據會保存到這個對象中。 ///size:獲取到的實際數據大小。 ///dwFlags:cookie的標志(位或運算,目前我接觸到的只有: /// (0x00002000,httpreadonly) /// lpReserved:保留參數對象(有知道的朋友請留言回復下,謝謝!) [DllImport("wininet.dll", CharSet=CharSet.Auto, SetLastError = true)] static extern bool InternetGetCookieEx(string url, string cookieName, StringBuilder cookieData, ref int size, int dwFlags, object lpReserved); [DllImport("Kernel32.dll", SetLastError = true)] private static extern int GetLastError(); /// 下面這個方法是獲取到cookie后,對cookie字符串進行拆分重組的。 public static CookieContainer GetUriCookieContainer(Uri uri) { CookieContainer cookies = null; int datasize = 2048; StringBuilder cookieData = new StringBuilder(datasize); if (!InternetGetCookie(uri.ToString(), null, cookieData, ref datasize)) { int errCode = GetLastError(); if (datasize < 0) return null; cookieData = new StringBuilder(datasize); if (!InternetGetCookie(uri.ToString(), null, cookieData, ref datasize)) { errCode = GetLastError(); return null; } } if (cookieData.Length > 0) { cookies = new CookieContainer(); string[] cooks = cookieData.ToString().Split(';'); for (int i = 0; i < cooks.Length; i++) { if (cooks[i].IndexOf(',') == -1) cookies.SetCookies(uri, cooks[i]); } } return cookies; } public static string GetCookiesString(CookieContainer cookies, Uri uri) { if (cookies == null || uri == null) return ""; CookieCollection cc = cookies.GetCookies(uri); string szCookies = ""; foreach (Cookie cook in cc) { szCookies = szCookies + cook.Name + "=" + cook.Value + ";"; } return szCookies; } }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。