m_smith Ответов: 1

Httpqueryinfo() - нарушение доступа к местоположению чтения 0x00000800 [решено]


Я ожидаю ответа от сервера после отправки ему некоторых данных с помощью функции HttpSendRequest (). Я хочу прочитать ответ, я звоню в полицию. HttpQueryInfo() функция, и отладчик останавливается с помощью Выброшено исключение ... Нарушение прав доступа местоположении 0x00000800 сообщение. Я бы использовал буферный массив для ответа, и я предполагаю, что проблема где - то там. Я не получаю никаких ошибок с функцией GetLastError ().
else if (method == _T("POST")) {
		LPCTSTR header = _T("Content-Type: text/html\nCustomers");
		BOOL hHttpSendReq = HttpSendRequest(hHttpOpenReq, NULL, NULL, toSend, strlen(toSend));
		if (!hHttpSendReq) {
			DWORD ErrorNum = GetLastError();
			std::cout << "HttpSendRequest() error No: " << ErrorNum;
			InternetCloseHandle(hHttpOpenReq);
			InternetCloseHandle(hIntConnect);
			InternetCloseHandle(hIntOpen);
			getchar();
			return 0;
		}
		char buffer[2048];
		if (HttpQueryInfo(hHttpOpenReq, HTTP_QUERY_RAW_HEADERS_CRLF, buffer, (LPDWORD)2048, NULL)) {
		
		}
		else {
			cout << "GetLastError:"<<GetLastError();
		}

В отладчике "буфер" отображается красным цветом, и там нет никакого контента, только забавные персонажи.
Есть идеи? Спасибо.

Что я уже пробовал:

Я не знаю, где искать, я проверил несколько примеров в сети, но они выглядят похожими. Я также изменил флаги (аргументы), но я не думаю, что проблема все равно существует.

1 Ответов

Рейтинг:
0

m_smith

Я не знаю точно, в чем была проблема, но теперь она работает :)

char buffer[4096];
		DWORD bufferSize = 4096;
		if (HttpQueryInfo(hHttpOpenReq, HTTP_QUERY_RAW_HEADERS_CRLF, (LPVOID)buffer, &bufferSize, NULL)) {
			cout << "buffer:" << buffer;
		}