猿问

为什么Get请求的返回结果总是一样的?

问题:使用以下代码发送http请求test.php的时候,返回的结果总是跟第一次的一样。
test.php的源码:
//输出1到100的随机数
echorand(1,100);
?>
C++源码:
char*server="127.0.0.1";
char*action="/test.php";
INTERNET_PORTport=80;
char*szHeader="Accept:*/*\r\n"
"Accept-Language:zh-cn\r\n"
"User-Agent:Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.0;.NETCLR2.0.50727;.NETCLR1.1.4322)\r\n"
"Host:%s\r\n"
"Connection:Closed\r\n\r\n";
CStringszHeaders;
szHeaders.Format(szHeader,server);
CInternetSessionsession;
CHttpConnection*pConnection=session.GetHttpConnection(server,port);
CHttpFile*pFile=pConnection->OpenRequest(CHttpConnection::HTTP_VERB_GET,action);//
BOOLresult=pFile->SendRequest(szHeaders,NULL,NULL);
szHeaders.ReleaseBuffer();
CStringheader;//获取header
pFile->QueryInfo(HTTP_QUERY_RAW_HEADERS_CRLF,header,0);
CStringdata("");//获取HTML
charszBuff[1025];
while(1)
{
intnReadLength=pFile->Read(szBuff,1024);
if(nReadLength==0)break;
szBuff[nReadLength]='\0';
data=data+szBuff;
}
AfxMessageBox(data);
pConnection->Close();
session.Close();
pFile->Close();
deletepFile;
deletepConnection;
data.ReleaseBuffer();
header.ReleaseBuffer();
return"";
慕莱坞森
浏览 446回答 2
2回答

慕雪6442864

关于CInternetSession缓存问题调用完一次之后,再次调用会出现不发送请求但会返回HTTP_STATUS_OK的现象。需要加一句代码。听说是windowsmobile的一个BUG加上这句代码就可以了:InternetSetOption(session,INTERNET_OPTION_RESET_URLCACHE_SESSION,NULL,0);

UYOU

看你的评论。别怪别人对你不满,就你这么贴代码片段,不被踩死你来踩我。贴完整文件出来,给别人阅读理解都少添点麻烦。同时尽量避免IDE环境下的操作,最好能够给出VC命令行版本的编译命令,在cmd.exe里你能运行通过的。别忘了注明VC的明确版本。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答