Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

C++ отправить запрос на сайт

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> C++ отправить запрос на сайт
Имя
Сообщение << Старые топики   Новые топики >>
C++ отправить запрос на сайт - 2011-02-08 16:59:36.270000   
FriLL

Сообщений: 2539
Оценки: 335
Присоединился: 2007-08-11 17:14:26.703333
Как проще всего отправить запрос на сайт
Вроде есть winapi OpenUrl, но чтото про нее ничего не нашел
Post #: 1
RE: C++ отправить запрос на сайт - 2011-02-08 17:29:04.910000   
Genco

Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
Эээ…а точно есть такая API? В MFC у CInternetSession это метод, через него можно и делается иногда. Но на С++ несложно и через сокеты (connect/send/closesocket - примеров достаточно). Возможно, в MSVS есть компонент, но это посмотреть надо - первые 2 способа вполне приемлемы.
Post #: 2
RE: C++ отправить запрос на сайт - 2011-02-08 18:02:18.040000   
FriLL

Сообщений: 2539
Оценки: 335
Присоединился: 2007-08-11 17:14:26.703333
Ну вообщем да, можно и через сокеты попробывать
Хотел сначала через cURL, но потом подумал что тащить всю либу както не очень
Post #: 3
RE: C++ отправить запрос на сайт - 2011-02-12 08:44:09.066666   
N1sedeath

Сообщений: 29
Оценки: 0
Присоединился: 2010-12-27 17:35:24.856666
посмотри тут http://www.rsdn.ru/summary/279.xml

примерно так это делается. Может можно проще, хз. пишу на сокетах, а если низкоуровневый код не нужен - Qt.
#include "stdafx.h" #include &lt;windows.h&gt; #include &lt;wininet.h&gt; #pragma comment(lib,"wininet") #include &lt;stdlib.h&gt; #include &lt;fstream.h&gt; int main(int argc, char* argv[]) { bool ok = false; // инициализируем WinInet HINTERNET hInternet = ::InternetOpen( TEXT("WinInet Test"), INTERNET_OPEN_TYPE_PRECONFIG, NULL,NULL, 0); if (hInternet != NULL) { // открываем HTTP сессию HINTERNET hConnect = ::InternetConnect( hInternet, TEXT("www.rsdn.ru"), INTERNET_DEFAULT_HTTP_PORT, NULL,NULL, INTERNET_SERVICE_HTTP, 0, 1u); if (hConnect != NULL) { // открываем запрос HINTERNET hRequest = ::HttpOpenRequest( hConnect, TEXT("GET"), TEXT("news.asp"), NULL, NULL, 0, INTERNET_FLAG_KEEP_CONNECTION, 1); if (hRequest != NULL) { // посылаем запрос BOOL bSend = ::HttpSendRequest(hRequest, NULL,0, NULL,0); if (bSend) { // создаём выходной файл ofstream fnews("news.html",ios::out|ios::binary); if (fnews.is_open()) for (;;) { // читаем данные char szData[1024]; DWORD dwBytesRead; BOOL bRead = ::InternetReadFile( hRequest, szData,sizeof(szData)-1, &dwBytesRead); // выход из цикла при ошибке или завершении if (bRead == FALSE || dwBytesRead == 0) break; // сохраняем результат szData[dwBytesRead] = 0; fnews &lt;&lt; szData; ok = true; } } // закрываем запрос ::InternetCloseHandle(hRequest); } // закрываем сессию ::InternetCloseHandle(hConnect); } // закрываем WinInet ::InternetCloseHandle(hInternet); } // для полного счастья, запускаем считанную страничку if (ok) system("start news.html"); return 0; }
Post #: 4
RE: C++ отправить запрос на сайт - 2011-02-12 14:23:46.303333   
Sunzer

Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
URLDownloadToFile()

http://msdn.microsoft.com/en-us/library/ms775123(v=vs.85).aspx
Post #: 5
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> C++ отправить запрос на сайт







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.