问题:使用以下代码发送http请求test.php的时候,返回的结果总是跟第一次的一样。
test.php的源码:
//输出1到100的随机数
<?php
echo rand(1,100);
?>
C++源码:
char* server="127.0.0.1";
char * action="/test.php";
INTERNET_PORT port = 80;
char * szHeader= "Accept: */*\r\n"
"Accept-Language: zh-cn\r\n"
"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\r\n"
"Host: %s\r\n"
"Connection: Closed\r\n\r\n";
CString szHeaders;
szHeaders.Format (szHeader,server);
CInternetSession session;
CHttpConnection* pConnection = session.GetHttpConnection(server,port);
CHttpFile* pFile = pConnection->OpenRequest(CHttpConnection::HTTP_VERB_GET,action);//
BOOL result = pFile->SendRequest(szHeaders,NULL,NULL);
szHeaders.ReleaseBuffer ();
CString header;//获取header
pFile->QueryInfo(HTTP_QUERY_RAW_HEADERS_CRLF,header,0);
CString data("");//获取HTML
char szBuff[1025];
while(1)
{
int nReadLength = pFile->Read(szBuff, 1024);
if(nReadLength==0) break;
szBuff[nReadLength]='\0';
data=data+szBuff;
}
AfxMessageBox(data);
pConnection->Close();
session.Close();
pFile->Close();
delete pFile;
delete pConnection;
data.ReleaseBuffer ();
header.ReleaseBuffer ();
return "";
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
调用完一次之后,再次调用会出现不发送请求但会返回 HTTP_STATUS_OK 的现象。
需要加一句代码。听说是windows mobile 的一个BUG
加上这句代码就可以了:
看你的评论。别怪别人对你不满,就你这么贴代码片段,不被踩死你来踩我。
贴完整文件出来,给别人阅读理解都少添点麻烦。同时尽量避免IDE环境下的操作,最好能够给出VC命令行版本的编译命令,在
cmd.exe
里你能运行通过的。别忘了注明VC的明确版本。