关于VC发送HTTP请求的问题,请高手帮忙,多谢
各位老大,小弟在通过VC发送http请求,请求地址:http://60.191.95.26:9899/default.aspx?cmd=test&cstr=460,000,571e000028e499,在IE上可以得到正确返回值,现在小弟想通过程序发送,但是在HttpSendRequest这里总返回错误,请高手给指点一下,谢谢
void GetHtml()
{
DWORD d;
DWORD dwBytesRead;
DWORD written;
HANDLE hFile;
CString ip;
CString port;
CString err;
CString header;
CString strLocal;
char pStrXML[100];
TCHAR szErrMsg[200];
TCHAR bufQuery[64];
const WCHAR hdrs[] = L"Content-Type: application/x-www-form-urlencoded";
CString url = L"http://60.191.95.26:9899/default.aspx?cmd=test&cstr=460,000,571e000028e499";
HINTERNET hOpen = InternetOpen( TEXT("Dopad"),//as user agent
PRE_CONFIG_INTERNET_ACCESS,
NULL,
INTERNET_INVALID_PORT_NUMBER,
0);
url = url.Mid(7);
int i = url.Find(L":",0);
ip = url.Left(i);
url = url.Mid(i+1);
i = url.Find(L"/",0);
port = url.Left(i);
url = url.Mid(i+1);
HINTERNET hConnect = InternetConnectW( hOpen,
ip,
(INTERNET_PORT)_wtoi(port),
NULL,
NULL,
INTERNET_SERVICE_HTTP,
0,
0);
HINTERNET hRequest = HttpOpenRequestW( hConnect,//InternetConnect()
TEXT("GET"),
url,
HTTP_VERSION,
NULL,
NULL,
INTERNET_FLAG_DONT_CACHE,
0);
sprintf(pStrXML,"cstr=460,000,571e000028e499");
header.Format(L"Content-Type: application/x-www-form-urlencoded\r\nContent-Length:%d",strlen(pStrXML));
BOOL bSendRequest = :: HttpSendRequestW(hRequest,hdrs,wcslen(hdrs),NULL,0);
if(!bSendRequest)
{
d=GetLastError();
err.Format(_T("%d"),d);
MessageBox(NULL,err,L"错误提示",MB_OK);
}
DWORD dwLengthBufQuery = sizeof(bufQuery);
BOOL bQuery = ::HttpQueryInfo(hRequest,HTTP_QUERY_CONTENT_LENGTH,bufQuery,&dwLengthBufQuery,NULL) ;
DWORD dwFileSize = (DWORD)_ttoi(bufQuery);
dwLengthBufQuery = sizeof(bufQuery);
bQuery = ::HttpQueryInfo(hRequest,HTTP_QUERY_LOCATION,bufQuery,&dwLengthBufQuery,NULL) ;
BYTE* buffer = new BYTE[dwFileSize+1] ;
BOOL bRead = ::InternetReadFile(hRequest,buffer,dwFileSize+1,&dwBytesRead);
if (bRead)
{
buffer[dwBytesRead] = 0;
}
hFile=CreateFile(L"1.txt",GENERIC_WRITE|GENERIC_READ,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
WriteFile(hFile,buffer,dwBytesRead,&written,NULL);
CloseHandle(hFile);
delete[] buffer;
}