关于VC发送HTTP请求的问题,请高手帮忙,多谢

dreamingdan 2010-04-13 11:45:04
各位老大,小弟在通过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;
}
...全文
392 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
imkjuu 2012-02-03
  • 打赏
  • 举报
回复
这里有一个功能强大的类,可以直接用。
http://download.csdn.net/detail/imkjuu/4021287
jamseyang 2010-04-26
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 un1 的回复:]
InternetOpen之后直接InternetOpenUrl就行了,干嘛自己解析url这么麻烦。
[/Quote]
up
Un1 2010-04-26
  • 打赏
  • 举报
回复
InternetOpen之后直接InternetOpenUrl就行了,干嘛自己解析url这么麻烦。
pobomud 2010-04-15
  • 打赏
  • 举报
回复
我最近也遇到类似问题,建议你先抓包看发出去的数据是否正确,我怀疑你发出去的数据跟你要求的是不一样的,因为你在IE里面测试正确的,证明网站程序没问题。
heikefangxian9 2010-04-14
  • 打赏
  • 举报
回复
如果你试着成功了,记得在这里回复一声哦
heikefangxian9 2010-04-14
  • 打赏
  • 举报
回复
把你的header去掉,改成NULL,试试,你的content-length可能是不正确的
soswaidao 2010-04-13
  • 打赏
  • 举报
回复
soswaidao 友情帮顶~~~~友情帮顶~~~~
dreamingdan 2010-04-13
  • 打赏
  • 举报
回复
BOOL bSendRequest = :: HttpSendRequestW(hRequest,hdrs,wcslen(hdrs),NULL,0);

if(!bSendRequest)
{
d=GetLastError();
err.Format(_T("%d"),d);
MessageBox(NULL,err,L"错误提示",MB_OK);
}
这里返回12029了,我也不知道是什么错误,请高手帮帮忙
Eleven 2010-04-13
  • 打赏
  • 举报
回复
返回什么错误呢?
dreamingdan 2010-04-13
  • 打赏
  • 举报
回复
有人了解吗

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧