百科游戏 手游攻略
大家好,今天给各位分享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
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 问题的介绍到此结束,希望对大家有所帮助。
- 最近发表