4

在向服务器发布帖子之前,我是否需要添加任何标题?

例如,目前我正在尝试以这种方式发送请求以及发布数据,

  LPCWSTR post = L"name=User&subject=Hi&message=Hi";

    if (!(WinHttpSendRequest( hRequest, 
                            WINHTTP_NO_ADDITIONAL_HEADERS,
                            0, (LPVOID)post, wcslen(post), 
                            wcslen(post), 0)))
    {
          //error
    }

这应该工作吗?

4

3 回答 3

5

什么对我有用:

    LPSTR  post = "log=test";//in my php file: if(isset($_POST['log']))
    hRequest = WinHttpOpenRequest(hConnect,
                                    L"POST",
                                    L"/test.php",
                                    NULL,
                                    WINHTTP_NO_REFERER,
                                    WINHTTP_DEFAULT_ACCEPT_TYPES,
                                    0);
    bResults = WinHttpSendRequest(hRequest,
                                    L"content-type:application/x-www-form-urlencoded",
                                    -1,
                                    post,
                                    strlen(post),
                                    strlen(post),
                                    NULL);
于 2015-02-04T14:44:01.653 回答
3

我猜

  • 您需要传递不宽的窄字符串作为发布数据。我不知道您是否为发布的数据指定了一种内容类型,该类型将指定编码 - 如果容易的话,您可能应该这样做 - 或者只是将字符串重新编码为 UTF-8,或者只是组装为一个窄字符串首先
  • 您可能需要对发布数据进行明确的行尾,即添加\r\n到您的(窄)字符串中 - 我不知道 API 是否会添加一个,因为我假设您会对二进制数据进行相同的调用。
于 2011-01-21T13:58:01.147 回答
1

根据这个MSDN page"POST" ,假设您使用的是动词 in ,您的代码示例肯定会起作用WinHttpOpenRequest。如果事情不正常,那么在 Web 浏览器和您的应用程序上运行 Fiddler,并比较从这两种情况生成的标头。

于 2011-01-21T14:37:36.617 回答