【问题标题】:Send JSON data via HttpOpenRequest通过 HttpOpenRequest 发送 JSON 数据
【发布时间】:2013-08-01 13:16:18
【问题描述】:

我不是在 C++ 编程,但我想找一个会这样做的人,所以如果我的问题简单或愚蠢,我很抱歉。

我需要一个使用HttpOpenRequest/HttpSendRequest 对象的简单示例,以便将JSON 数据发送到某个Web 服务/站点。

谢谢

【问题讨论】:

  • 首先,感谢 -1 。非常有建设性的帮助:)。无论如何,到目前为止,我知道我的朋友使用这些对象来发送标准的非 json 请求。现在他需要发送 json..一些他不知道的东西。

标签: c++ json httprequest borland-c++


【解决方案1】:

这是一个非常简单的示例,用于将 JSON 字符串发送到 http://hostname/path/scriptname。您必须根据需要添加适当的错误检查、状态代码检查等:

HINTERNET hInternet = InternetOpen(_T("MyApp"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);

HINTERNET hConnect = InternetConnect(hInternet, _T("hostname"), INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);

LPTSTR rgpszAcceptTypes[] = {_T("application/json"), NULL};
HINTERNET hRequest = HttpOpenRequest(hConnect, _T("POST"), _T("/path/scriptname"), NULL, NULL, rgpszAcceptTypes, 0, 0);

HttpAddRequestHeaders(hRequest, _T("Content-Type: application/json\r\n"), -1, HTTP_ADDREQ_FLAG_ADD);

char *JsonData = "..."; // your actual JSON data here
HttpSendRequest(hRequest, NULL, 0, JsonData, strlen(JsonData))

DWORD StatusCode = 0;
DWORD StatusCodeLen = sizeof(StatusCode);
HttpQueryInfo(hRequest, HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER, &StatusCode, &StatusCodeLen, NULL);

if (StatusCode == 200)
{
    // use InternetQueryDataAvailable() and InternetReadFile()
    // to read any response data as needed...
}

InternetCloseHandle(hRequest);
InternetCloseHandle(hConnect);
InternetCloseHandle(hInternet);

【讨论】:

    猜你喜欢
    • 2015-04-12
    • 2020-03-29
    • 2014-09-24
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-03
    相关资源
    最近更新 更多