使用httpsendrequest发送多部分/表单数据 我试图用C++中的HTTPSEnDebug发送多部分/表单数据,但似乎不起作用。我使用RFC标准作为边界,这是我的代码。我发送的是简单的数据,简单但尝试使用多部分/表单数据,这样我就可以理解边界是如何

使用httpsendrequest发送多部分/表单数据 我试图用C++中的HTTPSEnDebug发送多部分/表单数据,但似乎不起作用。我使用RFC标准作为边界,这是我的代码。我发送的是简单的数据,简单但尝试使用多部分/表单数据,这样我就可以理解边界是如何,c++,c,wininet,C++,C,Wininet,使用httpsendrequest发送多部分/表单数据 我试图用C++中的HTTPSEnDebug发送多部分/表单数据,但似乎不起作用。我使用RFC标准作为边界,这是我的代码。我发送的是简单的数据,简单但尝试使用多部分/表单数据,这样我就可以理解边界是如何工作的,但它不发送。这是我到目前为止得到的代码 #define _WIN32_WINNT 0x600 #include <stdio.h> #include <wininet.h> #define BUFLEN 10

使用httpsendrequest发送多部分/表单数据 我试图用C++中的HTTPSEnDebug发送多部分/表单数据,但似乎不起作用。我使用RFC标准作为边界,这是我的代码。我发送的是简单的数据,简单但尝试使用多部分/表单数据,这样我就可以理解边界是如何工作的,但它不发送。这是我到目前为止得到的代码

#define _WIN32_WINNT 0x600

#include <stdio.h>
#include <wininet.h>

#define BUFLEN 1024

static LPCTSTR acceptTypes[] = {"*/*", NULL};
static const char *postData = "submit=submit&cool=hawk";
static char headers[] = TEXT("Content-Type: multipart/form-data; boundary=abcde\r\n"
                            "--abcde\r\n"
                            "Content-Disposition: form-data; name=\"cool\"\r\n"
                            "testval\r\n"
                            "--abcde\r\n");

int main()
{
    HINTERNET hSession, hConnect, hFile;

    if( ( hSession = InternetOpen(
        "myapp",
        INTERNET_OPEN_TYPE_PRECONFIG,
        NULL,
        NULL,
        0
    ) ) == NULL )
    {
        printf("Couldn't start session. Error %ld\n", GetLastError());
        exit(1);
    }
    printf("Session started\n");

    if( ( hConnect = InternetConnect(
        hSession,
        "localhost",
        INTERNET_DEFAULT_HTTP_PORT,
        NULL,
        NULL,
        INTERNET_SERVICE_HTTP,
        0,
        0
    ) ) == NULL )
    {
        printf("Unable to connect to server. Error %ld\n", GetLastError());
        exit(1);
    }
    printf("Connected to server\n");

    if( ( hFile = HttpOpenRequest(
        hConnect,
        "POST",
        "/test/index.php",
        NULL,
        NULL,
        acceptTypes,
        INTERNET_FLAG_RELOAD,
        0
    ) ) == NULL )
    {
        printf("Unable to open request. Error %ld\n", GetLastError());
        exit(1);
    }
    printf("Opening request..Opened\n");

    unsigned long dataLen = strlen(postData)+1;
    bool res = HttpSendRequest(
        hFile,
        headers,
        -1,
        (char*)postData,
        dataLen
    );
    if( !res )
    {
        printf("Unable to send request. Error %ld\n", GetLastError());
        exit(1);
    }
    printf("Request sent\n");

//  char *szBuffer = (char*)malloc(sizeof(char)*BUFLEN);
    char szBuffer[BUFLEN];
    DWORD dwRead = 0;

    memset(&szBuffer, '\0', sizeof(szBuffer));

    while( InternetReadFile(hFile, szBuffer, sizeof(szBuffer), &dwRead) && dwRead )
    {
        printf("%s", szBuffer);
    }

    return 0;
}
#定义_WIN32_WINNT 0x600
#包括
#包括
#定义BUFLEN 1024
静态LPCTSTR接受类型[]={“*/*”,NULL};
静态常量char*postData=“submit=submit&cool=hawk”;
静态字符头[]=文本(“内容类型:多部分/表单数据;边界=abcde\r\n”
“--abcde\r\n”
“内容处置:表单数据;名称=\”酷\“\r\n”
“testval\r\n”
“--abcde\r\n”);
int main()
{
互联网会话、hConnect、hFile;
如果((hsSession=InternetOpen(
“myapp”,
互联网\开放\类型\预配置,
无效的
无效的
0
))==NULL)
{
printf(“无法启动会话。错误%ld\n”,GetLastError());
出口(1);
}
printf(“会话已启动\n”);
如果((hConnect=InternetConnect(
休会,
“本地主机”,
INTERNET\u默认\u HTTP\u端口,
无效的
无效的
INTERNET\u服务\u HTTP,
0,
0
))==NULL)
{
printf(“无法连接到服务器。错误%ld\n”,GetLastError());
出口(1);
}
printf(“已连接到服务器\n”);
if((hFile=HttpOpenRequest)(
hConnect,
“职位”,
“/test/index.php”,
无效的
无效的
接受类型,
互联网标志重新加载,
0
))==NULL)
{
printf(“无法打开请求。错误%ld\n”,GetLastError());
出口(1);
}
printf(“打开请求..打开\n”);
无符号长数据长度=strlen(postData)+1;
bool res=HttpSendRequest(
hFile,
标题,
-1,
(char*)postData,
达塔伦
);
如果(!res)
{
printf(“无法发送请求。错误%ld\n”,GetLastError());
出口(1);
}
printf(“已发送请求”);
//char*szBuffer=(char*)malloc(sizeof(char)*BUFLEN);
字符缓冲区[BUFLEN];
DWORD dwRead=0;
memset(&szBuffer,'\0',sizeof(szBuffer));
while(InternetReadFile(hFile、szBuffer、sizeof(szBuffer)、&dwRead)和&dwRead)
{
printf(“%s”,szBuffer);
}
返回0;
}

memset(szBuffer,'\0',sizeof(szBuffer))不带符号就足够了。已同意,但数据仍未发送