2013-08-01 6 views
-1

Я не программирую на C++, но я прошу кого-то, кто это делает, поэтому я сожалею, если мой вопрос прост или глуп.Отправить данные JSON через HttpOpenRequest

Мне нужен простой пример использования объектов HttpOpenRequest/HttpSendRequest, чтобы отправить данные JSON в веб-службу/сайт.

Спасибо

+0

Во-первых, спасибо за -1. Очень конструктивная помощь :). Во всяком случае, поскольку я знаю, что до сих пор мой друг использовал эти объекты для отправки стандартных не-json-запросов. Теперь ему нужно отправить json..Что-то, что отсутствует в его знаниях. – mikabuka

ответ

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); 
Смежные вопросы