powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа с интернетом
9 сообщений из 9, страница 1 из 1
Работа с интернетом
    #34040143
konst111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые, подскажите пожалуйста куда копать. Есть интернет страничка, к примеру эта http://adds.aviationweather.gov/metars/ где есть окно ввода и кнопка . Когда набираешь в окне ввода некий код, в данном и нажимаешь кнопку, открывается следующая страничка и информацией по твоему коду. Как программно выполнить эти дейсвия т.е.
1. Ввести в поле нужную строку и нажать кнопку
2. Прочитать результат поиска.
...
Рейтинг: 0 / 0
Работа с интернетом
    #34040701
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
konst111Уважаемые, подскажите пожалуйста куда копать. Есть интернет страничка, к примеру эта http://adds.aviationweather.gov/metars/ где есть окно ввода и кнопка . Когда набираешь в окне ввода некий код, в данном и нажимаешь кнопку, открывается следующая страничка и информацией по твоему коду. Как программно выполнить эти дейсвия т.е.
1. Ввести в поле нужную строку и нажать кнопку
2. Прочитать результат поиска.

Код генерируется картинкой? Не хорошо такие автоматы писать.
А не пробовал снифером снимать?
...
Рейтинг: 0 / 0
Работа с интернетом
    #34040762
konst111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akh
Вы не поняли. Есть страница http://adds.aviationweather.gov/metars/ где необходимо ввести ICAO код погодной станции и нажать кнопку Submit, после чего откроется страница, допустим такая кому интересно, http://adds.aviationweather.gov/metars/index.php где есть строчка с погодой в Москве (UNEE) UUEE 090600Z 19004MPS 3000 -DZ BR OVC004 10/09 Q1012 NOSIG
вот эту строчку и необходимо считать.
...
Рейтинг: 0 / 0
Работа с интернетом
    #34040823
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну что.
Берете эту страницу, где кнопка, смотрите в form action что вызывается, каким методом (скорее всего POST) и какие параметры передаются.


ага, вот и метод

FORM method="POST" action="/metars/index.php

а параметры?
например, явно используется хрень под названием
name="inputstring"
туда код станции поместить надо
есть еще другие поля, в т.ч. и hidden, возможно их надо тоже заполнить


собственно, на основании этго формируем POST запрос, высылаем на 80 порт сервера и ловим вывод, парсим его и получаем вожделенную погоду.
Если что непонятно с POST - доку по HTML покурить, также можно сниффером посмотреть что высылает браузер.
...
Рейтинг: 0 / 0
Работа с интернетом
    #34040834
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
konst111Akh
Вы не поняли. Есть страница http://adds.aviationweather.gov/metars/ где необходимо ввести ICAO код погодной станции и нажать кнопку Submit, после чего откроется страница, допустим такая кому интересно, http://adds.aviationweather.gov/metars/index.php где есть строчка с погодой в Москве (UNEE) UUEE 090600Z 19004MPS 3000 -DZ BR OVC004 10/09 Q1012 NOSIG
вот эту строчку и необходимо считать.

Насколько я знаю, при нажатии кпопки, параметры формы (или как ее там), передаются как состовная часть url. Не пробовали посмотреть исходник, для определения имен параметров, снять снифером отсылаемый пакет и посылать его?
...
Рейтинг: 0 / 0
Работа с интернетом
    #34041851
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
konst111Уважаемые, подскажите пожалуйста куда копать. Есть интернет страничка, к примеру эта http://adds.aviationweather.gov/metars/ где есть окно ввода и кнопка . Когда набираешь в окне ввода некий код, в данном и нажимаешь кнопку, открывается следующая страничка и информацией по твоему коду. Как программно выполнить эти дейсвия т.е.
1. Ввести в поле нужную строку и нажать кнопку
2. Прочитать результат поиска.

тут уже сказали как..
могу добавить, что тема пробегает и в книгах по си плас плас...
например в Библиотеке Системного Программиста от Фроловых - тема кажись поднята... Ищите так же нечто "Web сервер своими руками" - там найдёте описание методов POS, GET (либо HTML)...

(круглый)
...
Рейтинг: 0 / 0
Работа с интернетом
    #34043385
konst111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем. Пока остановился на простеньком который просто показывает строчки HTML кода странички по заданному URL.

void __fastcall TForm1::Button3Click(TObject *Sender)
{
AnsiString sss,url;
unsigned long dwRead;
url="http://usa-s1.vatsim.net/data/metar.php?id=UUEE";

HINTERNET hInet = InternetOpen ("DownloadFile",INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);

HINTERNET hUrl = InternetOpenUrlA(hInet,url.c_str(),NULL,NULL,0,0);
if( hUrl )
{
do
{
InternetReadFile(hUrl,sss.c_str(),2048,&dwRead);
Memo2->Lines->Add(sss.c_str());
}while(dwRead);
}
InternetCloseHandle(hInet);
InternetCloseHandle(hUrl);
}
...
Рейтинг: 0 / 0
Работа с интернетом
    #34052746
konst111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если кому интересно, то проблему удалось решить следующим образом.
Допустим у нас есть такоц код HTML. Можно создать пустой файл с расширением HTM и скорировать туда эти строчки и назовем его 222.htm
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<FORM ACTION="http://site.ru/Upload.php" name="MyForm">
<html>
<P>Пробуем заполнить поля и нажать кнопку 
<P>              13 . 10 . 2006  (пятница)
<P>
<P>
Ваш логин: <input name="login" type="text" >
Введите пароль: <input name="pass" type="password" > 
<input type="submit" name="Submit" value=":: check :..">
На форму выкладываем компоненту TcppWebBrowser и двет кнопки.
Первая кнопка будет загружать наш файл с HTML кодом и открывать его в эксполере.
Не забудьте включить #include <mshtml.h>.
Код: plaintext
1.
CppWebBrowser1->Navigate(WideString("C:/222.htm"));
Вторая будет вызывать функцию которая будет заполнять два поля и нажимать кнопку отправить.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
void __fastcall TForm1::PutDataIntoForm ( WideString UserID, WideString Password )
{
IHTMLDocument2 *pHTMLDocument = NULL;
AnsiString slHtmlFormName = "MyForm"; // <form name="UploadForm"...

// "MyForm" это имя формы из HTM файла 
//   “  <FORM ACTION="http://site.ru/Upload.php" name="MyForm"> “


if ( SUCCEEDED ( CppWebBrowser1 -> Document -> QueryInterface ( IID_IHTMLDocument2, ( LPVOID* )&pHTMLDocument ) ) )
    {
    if ( pHTMLDocument != NULL )
        {
        IHTMLElementCollection *pAll = NULL;
        if ( SUCCEEDED ( pHTMLDocument -> get_all ( &pAll ) ) && pAll )
            {
            TVariant vName1 = "login", vName2 = "pass";
// login это имя окна ввода из HTM файла   
//          “    Ваш логин: <input name="login" type="text" >  “
// pass это окно пароля из HTM файла 
//          “  Введите пароль: <input name="pass" //type="password" >  “

            TVariant vIndex =  0 ;
            // put into input element <input...
            // UserID
            IDispatch *pDisp1 = NULL;
            if ( SUCCEEDED ( pAll -> item ( vName1, vIndex, &pDisp1 ) ) && pDisp1 )
                {
                IHTMLInputElement *pInput = NULL;
                if ( SUCCEEDED ( pDisp1 -> QueryInterface ( IID_IHTMLInputElement, ( LPVOID* )&pInput ) ) && pInput )
                    {
                    pInput -> put_value ( UserID );
                    pInput -> Release ();
                    }
                pDisp1 -> Release ();
                }
            // put into input element <input...
            // Password
            IDispatch *pDisp2 = NULL;
            if ( SUCCEEDED ( pAll -> item ( vName2, vIndex, &pDisp2 ) ) && pDisp2 )
                {
                IHTMLInputElement *pInput = NULL;
                if ( SUCCEEDED ( pDisp2 -> QueryInterface ( IID_IHTMLInputElement, ( LPVOID* )&pInput ) ) && pInput )
                    {
                    pInput -> put_value ( Password );
                    pInput -> Release ();
                    }
                pDisp2 -> Release ();
                }
            }

        pAll -> Release ();
        }
    // click SUBMIT Button
    IHTMLElementCollection *HTMLForms = NULL;
    if ( SUCCEEDED ( pHTMLDocument -> get_forms ( &HTMLForms ) ) && HTMLForms )
        {
        TVariant vName3 = slHtmlFormName;
        TVariant vIndex3 =  0 ;
        IDispatch *pDisp3 = NULL;

        if ( SUCCEEDED ( HTMLForms -> item ( vName3, vIndex3, &pDisp3 ) ) && pDisp3 )
            {
            IHTMLFormElement *HTMLForm = NULL;

            if ( SUCCEEDED ( pDisp3 -> QueryInterface ( IID_IHTMLFormElement, ( LPVOID* )&HTMLForm ) ) && HTMLForm )
            {
            HTMLForm -> submit ();
            HTMLForm -> Release ();
            }

            pDisp3 -> Release ();

        }

        HTMLForms -> Release ();
    }

    pHTMLDocument -> Release ();
}
}

Удачи Всем.
...
Рейтинг: 0 / 0
Работа с интернетом
    #34220123
terrabit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста, как сделать то же самое, если имя формы не указано?

Например,
<form action=login.php method=post>
....

Заранее спасибо
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа с интернетом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]