Asp.net http 请求获取站点任意Cookie
搞Asp.net的朋友,难免会有需要发送一些http请求,网页数据抓取的时候!有一些安全性相对做得比较好点的站点,某些东西做得相对比较“安全”!!对于做WINDOWS平台下开发的朋友来说,了解windows原理,一些window的API、这会大大提示您的编程效率,我个人觉得,用好WindowAPI非常的有必要,也是程序员的必备知识wininet.dll-----------------------------------------------------------------------------------------搞C,C++的程序员,不会陌生吧、这个组件概而言之就是对internet,ftp,http底层做基础封装的编程接口!!!!!!///<summary>///获取Cookie的方法类。///</summary>publicclassCookieUtility{///url:你请求的站点地址、///cookieName:cookie名称,获取全部cookie传null、///cookieData:cookie数据保存对象,数据会保存到这个对象中。///size:获取到的实际数据大小。[DllImport("wininet.dll",SetLastError=true)]publicstaticexternboolInternetGetCookie(stringurl,stringcookieName,StringBuildercookieData,refintsize);///url:你请求的站点地址、///cookieName:cookie名称,获取全部cookie传null、(建议传null)///cookieData:cookie数据保存对象,数据会保存到这个对象中。///size:获取到的实际数据大小。///dwFlags:cookie的标志(位或运算,目前我接触到的只有:///(0x00002000,httpreadonly)///lpReserved:保留参数对象(有知道的朋友请留言回复下,谢谢!)[DllImport("wininet.dll",CharSet=CharSet.Auto,SetLastError=true)]staticexternboolInternetGetCookieEx(stringurl,stringcookieName,StringBuildercookieData,refintsize,intdwFlags,objectlpReserved);[DllImport("Kernel32.dll",SetLastError=true)]privatestaticexternintGetLastError();///下面这个方法是获取到cookie后,对cookie字符串进行拆分重组的。publicstaticCookieContainerGetUriCookieContainer(Uriuri){CookieContainercookies=null;intdatasize=2048;StringBuildercookieData=newStringBuilder(datasize);if(!InternetGetCookie(uri.ToString(),null,cookieData,refdatasize)){interrCode=GetLastError();if(datasize<0)returnnull;cookieData=newStringBuilder(datasize);if(!InternetGetCookie(uri.ToString(),null,cookieData,refdatasize)){errCode=GetLastError();returnnull;}}if(cookieData.Length>0){cookies=newCookieContainer();string[]cooks=cookieData.ToString().Split(';');for(inti=0;i<cooks.Length;i++){if(cooks[i].IndexOf(',')==-1)cookies.SetCookies(uri,cooks[i]);}}returncookies;}publicstaticstringGetCookiesString(CookieContainercookies,Uriuri){if(cookies==null||uri==null)return"";CookieCollectioncc=cookies.GetCookies(uri);stringszCookies="";foreach(Cookiecookincc){szCookies=szCookies+cook.Name+"="+cook.Value+";";}returnszCookies;}}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。