Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.09.2014, 20:49   #1
Mik92
Пользователь
 
Регистрация: 25.08.2014
Сообщений: 87
По умолчанию Помогите с GET запросом

Привет, отправляю GET запрос
Код:
void Request(int Method, LPCSTR Host, LPCSTR url, LPCSTR header, LPSTR data)
{
	try{
		//Retrieve default http user agent
		char httpUseragent[512];
		DWORD szhttpUserAgent = sizeof(httpUseragent);
		ObtainUserAgentString(0, httpUseragent, &szhttpUserAgent);

		char m[5];

		if (Method == GET)
			strcpy(m, "GET\0");
		else
			strcpy(m, "POST\0");

		HINTERNET internet = InternetOpenA(httpUseragent, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
		if (internet != NULL)
		{
			HINTERNET connect = InternetConnectA(internet, Host, INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
			if (connect != NULL)
			{
				HINTERNET request = HttpOpenRequestA(connect, m, url, "HTTP/1.1", NULL, NULL,
					INTERNET_FLAG_HYPERLINK | INTERNET_FLAG_IGNORE_CERT_CN_INVALID |
					INTERNET_FLAG_IGNORE_CERT_DATE_INVALID |
					INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP |
					INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS |
					INTERNET_FLAG_NO_AUTH |
					INTERNET_FLAG_NO_CACHE_WRITE |
					INTERNET_FLAG_NO_UI |
					INTERNET_FLAG_PRAGMA_NOCACHE |
					INTERNET_FLAG_RELOAD, NULL);

				if (request != NULL)
				{
					int datalen = 0;
					if (data != NULL) datalen = strlen(data);
					int headerlen = 0;
					if (header != NULL) headerlen = strlen(header);

					HttpSendRequestA(request, header, headerlen, data, datalen);

					InternetCloseHandle(request);
				}
			}
			InternetCloseHandle(connect);
		}
		InternetCloseHandle(internet);
	}
	catch (...) {}
}
Отправляю так
Код:
char URL[1024];
	char* geturi = "/**.txt";
	wsprintfA(URL, geturi);
	Request(GET, "**.ru", URL, NULL, NULL);
Вопрос такой, как получить код ответа? Что то типа if (ResponceCode == 404)
Гуглив кнопки клавы стер . Помогите пожалуйста

Последний раз редактировалось Mik92; 29.09.2014 в 20:57.
Mik92 вне форума Ответить с цитированием
Старый 29.09.2014, 21:52   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Если не ошибаюсь: сравнивать первые три символа ответа с 404. Ответы по HTTP в текстовом виде приходят.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.09.2014, 22:03   #3
Mik92
Пользователь
 
Регистрация: 25.08.2014
Сообщений: 87
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Если не ошибаюсь: сравнивать первые три символа ответа с 404. Ответы по HTTP в текстовом виде приходят.
Если в headers будет прописано чтобы стояло тогда будет в текстовом а так по идее не обязательно чтобы пришел ответ 404 должны стоять в браузере эти цифры.
Я нарыл тут код
Код:
	int statusCode;
	char responseText[256]; // change to wchar_t for unicode
	DWORD responseTextSize = sizeof(responseText);

	if (!HttpQueryInfo(Request,
		HTTP_QUERY_STATUS_CODE,
		&responseText,
		&responseTextSize,
		NULL))
		return 4;
	statusCode = atoi(responseText);

	char URL[1024];
	char* geturi = "/**.txt";
	wsprintfA(URL, geturi);
	Request(GET, "**.ru", URL, NULL, NULL);

	if (statusCode == HTTP_STATUS_NOT_FOUND)
	{
		exit(0);
	}
Но консоль не хочет отправлять запрос если он там стоит.. Убираю, и запрос уходит. Только опять же, проблема не решена

Последний раз редактировалось Mik92; 29.09.2014 в 22:11.
Mik92 вне форума Ответить с цитированием
Старый 29.09.2014, 22:50   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Насколько я понимаю, HttpQueryInfo надо вызывать после HttpSendRequest, разве нет?
waleri вне форума Ответить с цитированием
Старый 29.09.2014, 22:58   #5
Mik92
Пользователь
 
Регистрация: 25.08.2014
Сообщений: 87
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Насколько я понимаю, HttpQueryInfo надо вызывать после HttpSendRequest, разве нет?
Тоже зависает и ничего не происходит.
Mik92 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с запросом BARNEY БД в Delphi 29 11.09.2009 16:51
Помогите с запросом Juries Microsoft Office Access 0 12.04.2009 00:29
Помогите с запросом Viper666 Microsoft Office Access 2 14.05.2008 22:35
Помогите с запросом Blackmore БД в Delphi 3 07.05.2008 01:18
помогите с запросом 9-11 БД в Delphi 4 20.11.2006 10:04