HttpSendRequest调用之后要等半天 ,然后返回值还是0

toyix1234 2012-05-09 05:06:01
本来感觉写完登录后面就简单了,可以一个登录就是写不对 ,HttpSendRequest老是不成功,

是不是一个包,如果服务器返回的数据下面不使用,就不用模拟啊 ,

该式的 都测试了,还是不行 ,我好惨啊,


晚上再接着搞,看看能不能碰巧让我敲对代码
...全文
354 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
toyix1234 2012-05-10
  • 打赏
  • 举报
回复
DWORD dwSize = 0;
hInet = InternetOpen(UserAgent, INTERNET_OPEN_TYPE_DIRECT, NULL, INTERNET_INVALID_PORT_NUMBER, 0);

hConn = InternetConnect(hInet, Host, INTERNET_DEFAULT_HTTP_PORT, "", "", INTERNET_SERVICE_HTTP, 0, 0);
///////////////////////////////////////////////////////////

sprintf(Header, "%s%s\r\n"
"%s%s\r\n"
"%s%s\r\n"
//"%s%s\r\n"
"%s%s\r\n"
"%s%s\r\n",
"Accept:", "image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, */*",
"Accept-Language:","zh-CN",
"User-Agent:",UserAgent,
//"Accept-Encoding:", "gzip, deflate",
"Host:","www.renren.com",
"Connection:","Keep-Alive"
);
hGETs = HttpOpenRequest(hConn, "GET", "",
"HTTP/1.1", NULL, 0, INTERNET_FLAG_RELOAD, 0);
bRequest = HttpSendRequest(hGETs, Header, strlen(Header), NULL, 0);

char szBuffer[10240];
DWORD dwByteRead = 0;

ZeroMemory(szBuffer, sizeof(szBuffer));
char* pAnsi = new char[10240];
while (InternetReadFile(hGETs, szBuffer, sizeof(szBuffer), &dwByteRead) && dwByteRead > 0)
{
szBuffer[dwByteRead] = '\0';

Utf8ToAnsi(szBuffer,pAnsi,10240);

}
char Cooike[1024];
ZeroMemory(Cooike, sizeof(Cooike));

InternetGetCookie("http://www.renren.com","","",&dwSize);
InternetGetCookie("http://www.renren.com","",Cooike,&dwSize);
InternetSetCookie("http://www.renren.com",NULL,Cooike);
/////////////////////////////////////////////////////////////////////
ZeroMemory(Header,sizeof(Header));
sprintf(Header, "%s%s\r\n"
"%s%s\r\n"
//"%s%s\r\n"
"%s%s\r\n"
"%s%s\r\n"
"%s%s\r\n"
// "%s%s\r\n"
"%s%s\r\n"
"%s%d\r\n"
"%s%s\r\n",
"Accept:", "*/*",
"Accept-Language:","zh-cn",
"User-Agent:",UserAgent,
//"Accept-Encoding:", "gzip, deflate",
"Host:","www.renren.com",
"Referer:","http://www.renren.com/",
// "Content-Type:","application/x-www-form-urlencoded; charset=UTF-8",
"Connection:","Keep-Alive",
"Content-Length:", 133,
"Cache-Control:", "no-cache"
);
MessageBox(Header);
hGETs = HttpOpenRequest(hConn, "POST", "/ajax/ShowCaptcha",
"HTTP/1.1", NULL, 0, INTERNET_FLAG_RELOAD, 0);

ZeroMemory(PostData, sizeof(PostData));
sprintf(PostData,"%s%s%s%s%s",
"email=","89770176@qq.com","&password=","ts1234567",
"&icode=&origURL=http://www.renren.com/home&domain=renren.com&key_id=1&_rtk=a17c1b07"//1b7a5de1
);
bRequest = HttpSendRequest(hGETs, Header, strlen(Header), PostData, strlen(PostData));
int aa = GetLastError();
ZeroMemory(szBuffer, sizeof(szBuffer));
ZeroMemory(pAnsi, 10240);
while (InternetReadFile(hGETs, szBuffer, sizeof(szBuffer), &dwByteRead) && dwByteRead > 0)
{
szBuffer[dwByteRead] = '\0';

Utf8ToAnsi(szBuffer,pAnsi,10240);

}
源码贴上了 ,不过有点乱,来回改了半天还是不行
jxiaoge 2012-05-09
  • 打赏
  • 举报
回复
代码改的太乱了 等我整理整理 刚才 int aa = GetLastError();看了一下 返回12002,竟然会超时。。。
hurryboylqs 2012-05-09
  • 打赏
  • 举报
回复
代码发出来看看不就知道了?
toyix1234 2012-05-09
  • 打赏
  • 举报
回复
我看网上有说 HttpSendRequest的第三个参数必须为多字节编码格式,否则服务器端会出错的。花了一天半的时间调试出来的结论。如果不进行转换,服务器端只会接收一半数据,后面的数据将会收不到。

但是我拦截正常网站的包,他也不是utf格式发出去的啊,

难道 我要把head和 提交的数据都转化成utf-8然后再发?

18,356

社区成员

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

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