-
-
[旧帖] 不显示删除回复显示所有回复显示星级回复显示得分回复 WinInet发送HTTP请求报文时查询字符串带汉字可能异常 0.00雪花
-
发表于: 2010-3-23 23:53 2896
-
HINTERNET hInternet = InternetOpen("MyApp", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
HINTERNET hConnection = InternetConnect(hInternet, "192.168.1.100", INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
HINTERNET hRequest = HttpOpenRequest(hConnection, "GET", "/aaa/aaa.aspx?param=老师", "HTTP/1.1", NULL, NULL, INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_NO_CACHE_WRITE, 0);
HttpSendRequest(hRequest, NULL, 0, NULL, 0);
DWORD dw;
char szData[10240];
InternetReadFile(hRequest, szData, 10240, &dw);
......
InternetCloseHandle(hRequest);
InternetCloseHandle(hConnection);
InternetCloseHandle(hInternet);
上述代码向指定页面发送HTTP请求报文,查询字符串中带汉字。经多次试验,发现一个奇怪现象:如果这段代码是在exe文件中,一切正常,页面可以收到正确的汉字,但是如果这段代码是在dll中,则有时页面可以收到正确的汉字,而有时收到乱码字符(但乱码字符的长度并不等于2个汉字的长度,而是不定的)。进一步试验还表明不是页面代码的问题,因为抓包发现发送出去的时候已经是乱码了。请问这是什么原因?该怎样使用WinInet才能始终让页面收到正确的汉字?另外,上面的函数调用在贴上来时省略了差错检查的,不过运行中这些调用都成功的,而且InternetReadFile也能收到正确的应答报文。另外如果改成Winsock函数来实现上述功能,总是成功。但我需要使用WinInet。
HINTERNET hConnection = InternetConnect(hInternet, "192.168.1.100", INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
HINTERNET hRequest = HttpOpenRequest(hConnection, "GET", "/aaa/aaa.aspx?param=老师", "HTTP/1.1", NULL, NULL, INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_NO_CACHE_WRITE, 0);
HttpSendRequest(hRequest, NULL, 0, NULL, 0);
DWORD dw;
char szData[10240];
InternetReadFile(hRequest, szData, 10240, &dw);
......
InternetCloseHandle(hRequest);
InternetCloseHandle(hConnection);
InternetCloseHandle(hInternet);
上述代码向指定页面发送HTTP请求报文,查询字符串中带汉字。经多次试验,发现一个奇怪现象:如果这段代码是在exe文件中,一切正常,页面可以收到正确的汉字,但是如果这段代码是在dll中,则有时页面可以收到正确的汉字,而有时收到乱码字符(但乱码字符的长度并不等于2个汉字的长度,而是不定的)。进一步试验还表明不是页面代码的问题,因为抓包发现发送出去的时候已经是乱码了。请问这是什么原因?该怎样使用WinInet才能始终让页面收到正确的汉字?另外,上面的函数调用在贴上来时省略了差错检查的,不过运行中这些调用都成功的,而且InternetReadFile也能收到正确的应答报文。另外如果改成Winsock函数来实现上述功能,总是成功。但我需要使用WinInet。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
赞赏
他的文章
看原图
赞赏
雪币:
留言: