我正在使用wininet使用HttpRequests。与Wininet崩溃
我尝试使httpRequest发送数据到本地Web服务器上的PHP文件。虽然它发送,但它遭受了沿线的崩溃。我的C++代码看起来像这样
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <wininet.h>
#define PAGE_NAME "order.php"
#pragma comment (lib, "wininet")
int main()
{
char firstname[50] = "John";
char lastname[50] = "Darwin";
char tel[50] = "08098688603";
char idnumber[50] = "99057151";
char* data = (char*)VirtualAlloc(NULL, 4052, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
//lstrcpy(data, PAGE_NAME);
lstrcat(data, PAGE_NAME);
lstrcat(data, "?&firstname=%s");
lstrcat(data, firstname);
lstrcat(data, "&lastname=%s");
lstrcat(data, lastname);
lstrcat(data, "&tel=%s");
lstrcat(data, tel);
lstrcat(data, "&idnumber=%s");
lstrcat(data, (char*)idnumber);
HINTERNET hSession = InternetOpen("Vox", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
if (hSession == NULL)
MessageBox(NULL, "Bad InternetOpen", "Error", MB_OK);
HINTERNET hConnect = InternetConnect(hSession, "localhost", 80, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 1);
if (hConnect == NULL)
MessageBox(NULL, "Bad InternetConect", "Error", MB_OK);
HINTERNET hRequest = HttpOpenRequest(hConnect, "POST", PAGE_NAME, NULL, NULL, (const char**)"text/*", 0, 1);
if (hRequest == NULL)
MessageBox(NULL, "Bad OpenRequest", "Error", MB_OK);
if (HttpSendRequestA(hRequest, "Content-Type: app1ication/x-www-form-urlencoded", strlen("Content-Type: app1ication/x-www-form-urlencoded"), data, strlen(data)) == NULL)
MessageBox(NULL, "Bad SendRequest", "Error", MB_OK);
else
MessageBox(NULL, "Data transfer Complete", "Sent Info", MB_ICONINFORMATION | MB_OK);
InternetCloseHandle(hRequest);
InternetCloseHandle(hConnect);
InternetCloseHandle(hSession);
return 0;
}
虽然它与完整的资料,PHP文件正确地发送,它在该行
HINTERNET hRequest = HttpOpenRequest(hConnect, "POST", PAGE_NAME, NULL, NULL, (const char**)"text/*", 0, 1);
崩溃,并显示错误
抛出异常的0x7504712A(wininet.dll)在ConsoleApplication1.exe中:0xC0000005:访问冲突读取位置0x74786574。
如果有这种异常的处理程序,程序可能会安全地继续。
我可能会错过什么,有什么我不正确?
请不包括错误消息的图像,但作为文本,这提高了这一问题的可搜索性。 –
我自己修复了。 –