Я профессиональный юрист и программист-любитель (в основном C++). Ежедневно мне приходится заходить на один и тот же веб-сайт и искать массу судебных дел (обычный текст). Недавно мне пришла в голову идея написать простую функцию C++ для автоматической отправки данных формы на сайт, что сэкономило бы мне много рабочего времени. Я изучал WinInet в течение последних нескольких дней, и после многих часов мне удалось отправить простой запрос GET и получить исходный код главной страницы, но я не могу пойти дальше этого. Моя цель — отправить POST-запрос (думаю) с параметрами поиска на сайт и получить в ответ исходный код реальной страницы результатов поиска.
Что мне удалось запрограммировать пока почти бесполезно, но, по крайней мере, дает представление о моем нынешнем состоянии.
#include
#include
#include
#pragma comment (lib, "Wininet.lib")
bool GetRequest() {
HINTERNET hSession = InternetOpen(L"Mozilla/5.0", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
if (!hSession) return false;
HINTERNET hConnect = InternetConnect(hSession, L"scon.stj.jus.br", INTERNET_INVALID_PORT_NUMBER, L"", L"", INTERNET_SERVICE_HTTP, 0, 0);
if (!hConnect) return false;
HINTERNET hRequest = HttpOpenRequest(hConnect, L"GET", L"/", NULL, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION, 0);
if (!hRequest) return false;
if (!HttpSendRequest(hRequest, 0, 0, 0, 0)) return false;
//from here on, I am able to read the main page source code using InternetReadFile, but I can't submit any form data
InternetCloseHandle(hRequest);
InternetCloseHandle(hConnect);
InternetCloseHandle(hSession);
return true;
}
РЕДАКТИРОВАТЬ:
У меня все еще возникают проблемы при попытке воспроизвести поисковый запрос. Всякий раз, когда я запускаю следующий код, я продолжаю получать в качестве ответа одну и ту же веб-страницу. Я думаю, что значения, которые я передаю с запросом GET, неверны. Я только что скопировал URL-ссылку, сгенерированную браузером при выполнении общего поиска, но веб-форма, похоже, имеет другой список ввода (я не знаю, возможно ли это). В любом случае, вот мой текущий код:
#include
#include
#include
#pragma comment (lib, "Wininet.lib")
#define BUFFERSIZE 2048
bool GetRequest() {
std::wstring inputValues = L"/SCON/pesquisar.jsp?preConsultaPP=&pesquisaAmigavel=+fraude&acao=pesquisar&novaConsulta=true&i=1&b=ACOR&livre=fraude&filtroPorOrgao=&filtroPorMinistro=&filtroPorNota=&data=&operador=e&thesaurus=JURIDICO&p=true&tp=T&processo=&classe=&uf=&relator=&dtpb=&dtpb1=&dtpb2=&dtde=&dtde1=&dtde2=&orgao=&ementa=¬a=&ref=";
HINTERNET hSession = InternetOpen(L"Mozilla/5.0", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
if (!hSession) return false;
HINTERNET hConnect = InternetConnect(hSession, L"processo.stj.jus.br", INTERNET_INVALID_PORT_NUMBER, L"", L"", INTERNET_SERVICE_HTTP, 0, 0);
if (!hConnect) return false;
HINTERNET hGetRequest = HttpOpenRequest(hConnect, L"GET", inputValues.c_str(), NULL, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION, 0);
if (!hGetRequest) return false;
if (!HttpSendRequest(hGetRequest, NULL, 0, 0, 0)) return false;
char buffer[BUFFERSIZE + 1] = "";
DWORD dwBytesRead;
BOOL bRead;
FILE* file=NULL;
fopen_s(&file, "output.txt", "w");
if (!file) return false;
while (true) {
bRead = InternetReadFile(hGetRequest, buffer, BUFFERSIZE, &dwBytesRead);
if (dwBytesRead == 0) break;
if (bRead) buffer[dwBytesRead] = 0;
fwrite(buffer, sizeof(char), strlen(buffer), file);
}
InternetCloseHandle(hGetRequest);
InternetCloseHandle(hConnect);
InternetCloseHandle(hSession);
return true;
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... -wininet-c
Отправка данных формы с помощью WinInet (C++) ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1737332175
Anonymous
Я профессиональный юрист и программист-любитель (в основном C++). Ежедневно мне приходится заходить на один и тот же веб-сайт и искать массу судебных дел (обычный текст). Недавно мне пришла в голову идея написать простую функцию C++ для автоматической отправки данных формы на сайт, что сэкономило бы мне много рабочего времени. Я изучал WinInet в течение последних нескольких дней, и после многих часов мне удалось отправить простой запрос GET и получить исходный код главной страницы, но я не могу пойти дальше этого. Моя цель — отправить POST-запрос (думаю) с параметрами поиска на сайт и получить в ответ исходный код реальной страницы результатов поиска.
Что мне удалось запрограммировать пока почти бесполезно, но, по крайней мере, дает представление о моем нынешнем состоянии.
#include
#include
#include
#pragma comment (lib, "Wininet.lib")
bool GetRequest() {
HINTERNET hSession = InternetOpen(L"Mozilla/5.0", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
if (!hSession) return false;
HINTERNET hConnect = InternetConnect(hSession, L"scon.stj.jus.br", INTERNET_INVALID_PORT_NUMBER, L"", L"", INTERNET_SERVICE_HTTP, 0, 0);
if (!hConnect) return false;
HINTERNET hRequest = HttpOpenRequest(hConnect, L"GET", L"/", NULL, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION, 0);
if (!hRequest) return false;
if (!HttpSendRequest(hRequest, 0, 0, 0, 0)) return false;
//from here on, I am able to read the main page source code using InternetReadFile, but I can't submit any form data
InternetCloseHandle(hRequest);
InternetCloseHandle(hConnect);
InternetCloseHandle(hSession);
return true;
}
РЕДАКТИРОВАТЬ:
У меня все еще возникают проблемы при попытке воспроизвести поисковый запрос. Всякий раз, когда я запускаю следующий код, я продолжаю получать в качестве ответа одну и ту же веб-страницу. Я думаю, что значения, которые я передаю с запросом GET, неверны. Я только что скопировал URL-ссылку, сгенерированную браузером при выполнении общего поиска, но веб-форма, похоже, имеет другой список ввода (я не знаю, возможно ли это). В любом случае, вот мой текущий код:
#include
#include
#include
#pragma comment (lib, "Wininet.lib")
#define BUFFERSIZE 2048
bool GetRequest() {
std::wstring inputValues = L"/SCON/pesquisar.jsp?preConsultaPP=&pesquisaAmigavel=+fraude&acao=pesquisar&novaConsulta=true&i=1&b=ACOR&livre=fraude&filtroPorOrgao=&filtroPorMinistro=&filtroPorNota=&data=&operador=e&thesaurus=JURIDICO&p=true&tp=T&processo=&classe=&uf=&relator=&dtpb=&dtpb1=&dtpb2=&dtde=&dtde1=&dtde2=&orgao=&ementa=¬a=&ref=";
HINTERNET hSession = InternetOpen(L"Mozilla/5.0", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
if (!hSession) return false;
HINTERNET hConnect = InternetConnect(hSession, L"processo.stj.jus.br", INTERNET_INVALID_PORT_NUMBER, L"", L"", INTERNET_SERVICE_HTTP, 0, 0);
if (!hConnect) return false;
HINTERNET hGetRequest = HttpOpenRequest(hConnect, L"GET", inputValues.c_str(), NULL, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION, 0);
if (!hGetRequest) return false;
if (!HttpSendRequest(hGetRequest, NULL, 0, 0, 0)) return false;
char buffer[BUFFERSIZE + 1] = "";
DWORD dwBytesRead;
BOOL bRead;
FILE* file=NULL;
fopen_s(&file, "output.txt", "w");
if (!file) return false;
while (true) {
bRead = InternetReadFile(hGetRequest, buffer, BUFFERSIZE, &dwBytesRead);
if (dwBytesRead == 0) break;
if (bRead) buffer[dwBytesRead] = 0;
fwrite(buffer, sizeof(char), strlen(buffer), file);
}
InternetCloseHandle(hGetRequest);
InternetCloseHandle(hConnect);
InternetCloseHandle(hSession);
return true;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79368100/submit-form-data-using-wininet-c[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия