手机版

百科游戏 手游攻略

hinternet(关于VC post cookie 问题)

百科 2026-02-05 21:26:41 手游攻略 阅读:3795次

大家好,今天给各位分享hinternet的一些知识,其中也会对关于VC post cookie 问题进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!

VC 大虾帮我注解一下~关于WinINet API方面

在“VC这几个API啥意思。。。。”我已经解答

顺便复制一份

##############################################################

来自MSDN的注释

HINTERNETWINAPIInternetOpen(

LPCTSTRlpszAgent,

DWORDdwAccessType,

LPCTSTRlpszProxy,

LPCTSTRlpszProxyBypass,

DWORDdwFlags

);

internetOpen的第一个参数lpszAgent是指客户端名,例如IE是MicrosoftInternetExplorer,这个一般需要设置为常见浏览器标识,否则有些服务器会拒绝连接,比如百度

这用于设置HTTP协议头中的agent段

HINTERNETInternetOpenUrl(

HINTERNEThInternetSession,

LPCTSTRlpszUrl,

LPCTSTRlpszHeaders,

DWORDdwHeadersLength,

DWORDdwFlags,

DWORDdwContext

);

InternetOpenUrl第四个参数是头数据长度

楼主说的地址是指第五个参数吧?那不是地址,那是标识符INTERNET_FLAG_RAW_DATA,只不过其值被直接写了出来,这不推荐,妨碍代码可读性

BOOLWINAPIInternetReadFile(

HINTERNEThFile,

LPVOIDlpBuffer,

DWORDdwNumberOfBytesToRead,

LPDWORDlpdwNumberOfBytesRead

);

具体信息参考MSDN

MSDN部分文档是有中文版的,但是如果想深入学习开发,还是要提高英文水平以接受英文文档的

关于VC post cookie 问题

如果是用WinInet接口来进行HTTP开发的,那么在你HttpOpenRequest时加上INTERNET_FLAG_NO_COOKIES标志,然后在你调用HttpSendRequest之前,使用相关的接口如HttpAddRequestHeaders加上你的COOKIE头,这样HttpSendRequest发出的http数据包就包含有你指定的COOKIE头部。

比如:

这是我写的某个代码片段,供参考:

HINTERNEThInternet=InternetOpen(NULL,INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,0);

HINTERNEThConnect=InternetConnect(hInternet,__TEXT("*****"),INTERNET_DEFAULT_HTTPS_PORT,

NULL,NULL,INTERNET_SERVICE_HTTP,NULL,0);

CStringsUri;

LONGLONGlTime=GetUnixTime();

sUri.Format("*****/*****?%s&v=%I64u",lptszCodeStr,lTime);

HINTERNEThRequest=HttpOpenRequest(hConnect,__TEXT("GET"),sUri.GetBuffer(),NULL,

"https://*****.*****.com/v2/?reg&tpl=pp&u=",NULL,

dwHttpFlags,0);

CStringsCookieHdr=__TEXT("Cookie:");

map::iteratoriIter=CookiePair.begin();

for(;iIter!=CookiePair.end();iIter++)

{

sCookieHdr+=iIter->first;

sCookieHdr+=__TEXT("=");

sCookieHdr+=iIter->second;

sCookieHdr+=__TEXT(";");

}//将之前保存的COOKIE格式化为“Cookie:xx=xx;”格式

HttpAddRequestHeaders(hRequest,sCookieHdr.GetBuffer(),-1,HTTP_ADDREQ_FLAG_ADD|HTTP_ADDREQ_FLAG_REPLACE);

HttpSendRequest(hRequest,NULL,NULL,0,0);

C++程序实现WebService接口调用

用InternetOpen、InternetOpenUrl、HttpOpenRequest(此时可以指定POST)、HttpSendRequest(此时可以补充你那个SOAPAction:"http://xxx.com/GetMessage"头和后面那一串soap的xml,字符串格式)、InternetCloseHandle、HttpQueryInfo(看看是不是拿到http200了)、InternetReadFile(接收返回数据),之后你把各种之前没关掉的HINTERNET关掉即可

p.s.你可能需要一套xml的库来帮你处理这些字符串

关于hinternet,关于VC post cookie 问题的介绍到此结束,希望对大家有所帮助。

本文链接:https://bk.89qw.com/a-990833

最近发表
网站分类