使用 HttpSendRequestA 发送 POST 失败并显示 ERROR_HTTP_HEADER_NOT_FOUND?
Sending a POST using HttpSendRequestA fails with ERROR_HTTP_HEADER_NOT_FOUND?
我正在尝试在本地计算机上使用 XAMPP post 数据到测试 .php
脚本,但总是失败 ERROR_HTTP_HEADER_NOT_FOUND
。我检查了服务器日志,没有请求发送到 Apache。我可以通过网络浏览器手动执行此操作,并且 php 脚本会按预期运行。
这是不起作用的 C++ 代码。有人可以指出问题吗?
static const char *accepttypes[]={ "application/x-www-form-urlencoded", NULL};
static const char headers[]="application/x-www-form-urlencoded\r\n";
// open session
HINTERNET hsession;
if ((hsession=InternetOpen(_T("Whatever"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0)) != NULL) {
HINTERNET hconnect;
if ((hconnect=InternetConnect(hsession, _T("127.0.0.1"), INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0)) != NULL) {
HINTERNET hpostreq;
if ((hpostreq=HttpOpenRequestA(hconnect, "POST", "/mytest.php", NULL, NULL, accepttypes, INTERNET_FLAG_RELOAD, 0)) != NULL) {
BYTE *data=(BYTE*)"xyz=1234";
DWORD datasize=8;
if (HttpSendRequestA(hpostreq, headers, sizeof(headers), (LPVOID) data, datasize)) {
....
// ^^^^^ That always fails with ERROR_HTTP_HEADER_NOT_FOUND
我看到你对 HttpSendRequestA()
的调用有两个错误:
headers
的值需要从"application/x-www-form-urlencoded\r\n"
改为"Content-Type: application/x-www-form-urlencoded"
。
sizeof(headers)
需要更改为 -1
、sizeof(headers)-1
或 strlen(headers)
。您需要传入 -1
让函数计算 headers
字符串的字符长度,或者您可以传入实际字符长度。该字符串的空终止符不包含在该长度中。
我正在尝试在本地计算机上使用 XAMPP post 数据到测试 .php
脚本,但总是失败 ERROR_HTTP_HEADER_NOT_FOUND
。我检查了服务器日志,没有请求发送到 Apache。我可以通过网络浏览器手动执行此操作,并且 php 脚本会按预期运行。
这是不起作用的 C++ 代码。有人可以指出问题吗?
static const char *accepttypes[]={ "application/x-www-form-urlencoded", NULL};
static const char headers[]="application/x-www-form-urlencoded\r\n";
// open session
HINTERNET hsession;
if ((hsession=InternetOpen(_T("Whatever"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0)) != NULL) {
HINTERNET hconnect;
if ((hconnect=InternetConnect(hsession, _T("127.0.0.1"), INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0)) != NULL) {
HINTERNET hpostreq;
if ((hpostreq=HttpOpenRequestA(hconnect, "POST", "/mytest.php", NULL, NULL, accepttypes, INTERNET_FLAG_RELOAD, 0)) != NULL) {
BYTE *data=(BYTE*)"xyz=1234";
DWORD datasize=8;
if (HttpSendRequestA(hpostreq, headers, sizeof(headers), (LPVOID) data, datasize)) {
....
// ^^^^^ That always fails with ERROR_HTTP_HEADER_NOT_FOUND
我看到你对 HttpSendRequestA()
的调用有两个错误:
headers
的值需要从"application/x-www-form-urlencoded\r\n"
改为"Content-Type: application/x-www-form-urlencoded"
。sizeof(headers)
需要更改为-1
、sizeof(headers)-1
或strlen(headers)
。您需要传入-1
让函数计算headers
字符串的字符长度,或者您可以传入实际字符长度。该字符串的空终止符不包含在该长度中。