У меня проблема с отправкой POST-данных через WinHttpSendRequest в асинхронном режиме.
В синхронном режиме:
WinHttpAddRequestHeaders(request_handles.at(handler_index), L"Content-Type:application/x-www-form-urlencoded", -1L, WINHTTP_ADDREQ_FLAG_ADD);
int rc = WinHttpSendRequest(request_handles.at(handler_index), WINHTTP_NO_ADDITIONAL_HEADERS, 0, (LPVOID)postData.c_str(), dataLen, dataLen, 0);
Работает как шарм. Мой сервер получает postData, как я и ожидал.
В асинхронном режиме:
WINHTTP_STATUS_CALLBACK cb = WinHttpSetStatusCallback(request_handles.at(handler_index), httpReadCallback, WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE | WINHTTP_CALLBACK_STATUS_REQUEST_ERROR |
WINHTTP_CALLBACK_STATUS_REDIRECT | WINHTTP_CALLBACK_STATUS_SECURE_FAILURE | WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE |
WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION | WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED, NULL);
WinHttpAddRequestHeaders(request_handles.at(handler_index), L"Content-Type:application/x-www-form-urlencoded", -1L, WINHTTP_ADDREQ_FLAG_ADD);
int rc = WinHttpSendRequest(request_handles.at(handler_index), WINHTTP_NO_ADDITIONAL_HEADERS, 0, (LPVOID)postData.c_str(), dataLen, dataLen, 0);
Сервер получает запрос POST, но без тела данных. Что дает?
Задача ещё не решена.
Других решений пока нет …