Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Отправка на форму! (https://forum.antichat.xyz/showthread.php?t=19071)

nc.STRIEM 13.05.2006 22:25

Отправка на форму!
 
Короч стоит задача такая, используя сишку нуно
отправить информация на сервак на php, какойнибуть такой запрос http://host.ru/script.php?id=ok
Вопрос в следующем как это сделать? может есть какието функции втроеные? CppWebBrowser использовать както не оч эстетично! Или может прост кто подскажет как это через cmd сделать? тогда можно будет обойтись system();

TaNkist 14.05.2006 08:11

Воспользуйся телнетом.

Deem3n® 14.05.2006 13:59

Код:

#include <afxinet.h>
...
void SendGetRequest(CString szHostName, CString wts)
{
        CInternetSession session;
        CHttpConnection* pConnection = NULL;
        CHttpFile* pFile = NULL;
   
        UINT buff_size = 2048;
        char* buffer = new char[buff_size];
        UINT nBytesRead = 0;
        try
        {
                pConnection = session.GetHttpConnection(szHostName, (INTERNET_PORT)80);
                pFile = pConnection->OpenRequest(1, wts); // 1 = GET
                pFile->SendRequest();
               
                nBytesRead = pFile->Read(buffer, buff_size - 1);
                buffer[nBytesRead] = '\0';
                // запрошенная страница
                AfxMessageBox(buffer);
        }
        catch(CInternetException* e)
        {
                // Обрабатываешь исключение ...
                AfxMessageBox("Error!");
                e->Delete();
        }
        if(pFile) delete pFile;
        if(pConnection) delete pConnection;
        delete [] buffer;
}
...

http://192.168.50.2/2/1.php?id=1&test=1 вызывать вот так:
Код:

SendGetRequest("192.168.50.2", "/2/1.php?id=1&test=1");

nc.STRIEM 14.05.2006 17:17

Это ты под Microsoft Visual писал? прост в Buildere нет такой библиотеки, а Microsoft незнает че такое AfxMessageBox
Мне нужно это в кансольном режиме, потомуш с визуалкой в buildere элементарно делаеться!

nc.STRIEM 14.05.2006 17:24

TaNkist а через telnet как? и получиться ли сделать на бесплатный хост?
а и еще есле telnet делать там же над несколько команд писать, a system() выполняет команду которая в ней вписана и закрывает cmd !

Deem3n® 14.05.2006 18:29

Цитата:

Сообщение от nc.STRIEM
.. а Microsoft незнает че такое AfxMessageBox

оччень странно ... ну можно обойтись и без AfxMessageBox

PS: в следующий раз указывай явно среду разработки - а не " используя сишку"
PPS: для Dephi/С++ есть хорошие справочники, ссылки тут, и вот в справочнике для Delphi есть статейка "Как отправить вебформу на сервер при помощи TClientSocket (напрямую и через прокси)". Так что если используешь Dephi/Builder - RTFM (F=Following) :D

nc.STRIEM 14.05.2006 18:45

Deem3n®
в Builder я знаю как это делаеться с помощью CppWebBrowser, прост мне нужно чеб в кансольке это все сделать, без визуалки! а TClientSocket эт тож с визуалкой! незнаеш можно послать через system() телнетом?

Raider 15.05.2006 20:24

Код:

#include <wininet.h>
...
BOOL HttpGetRequest(LPSTR lpszHost, LPSTR lpszGetRequest)
{
    BOOL bResult = FALSE;
    HINTERNET hInet = InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT | INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
    if (hInet)
    {
              HINTERNET hConnect = InternetConnect(hInet, lpszHost, INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
              if (hConnect)
              {
                            HINTERNET hRequest = HttpOpenRequest(hConnect, NULL, lpszGetRequest, NULL, NULL, NULL, 0, 0);
                            if (hRequest)
                            {
                                        char szHeaders[64]; // Дополнительные заголовки
                                        wsprintf(szHeaders, "Referer: %s\r\nHost: %s", lpszHost, lpszHost);
                                       
                                        bResult = HttpSendRequest(hRequest, szHeaders, lstrlen(szHeaders), NULL, 0);
                                       
                                        InternetCloseHandle(hRequest);
                                       
                            }
                            InternetCloseHandle(hConnect);
              }
              InternetCloseHandle(hInet);
    }
    return bResult;
}

Юзать так же, как и в примере который привёл Deem3n®.

ps
Кодил не на Builder'е, поэтому возможно тебе придётся немного подправить код ...

sn0w 15.05.2006 22:17

на самом деле чтобы хотябы разобраться в вопросе, хватит обыкновенного сниффера. неважно на чем кодишь, на си, делфе асме или васике. просто смотришь что отсылает бровсер и все. аналогично делаешь в своей софтине.

nc.STRIEM 15.05.2006 22:32

sn0w я знаю че отсылает браузер, вопрос стоял в том че какими функциями это сделать из exe файла!
Raider спасиб! потихоньку разбираюсь...


Время: 15:22