Отправка на форму!

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by nc.STRIEM, 13 May 2006.

  1. nc.STRIEM

    nc.STRIEM Members of Antichat

    Joined:
    5 Apr 2006
    Messages:
    1,036
    Likes Received:
    347
    Reputations:
    292
    Короч стоит задача такая, используя сишку нуно
    отправить информация на сервак на php, какойнибуть такой запрос http://host.ru/script.php?id=ok
    Вопрос в следующем как это сделать? может есть какието функции втроеные? CppWebBrowser использовать както не оч эстетично! Или может прост кто подскажет как это через cmd сделать? тогда можно будет обойтись system();
     
  2. TaNkist

    TaNkist Elder - Старейшина

    Joined:
    6 Apr 2006
    Messages:
    147
    Likes Received:
    47
    Reputations:
    19
    Воспользуйся телнетом.
     
  3. Deem3n®

    Deem3n® RTFMSDN

    Joined:
    19 Sep 2005
    Messages:
    378
    Likes Received:
    153
    Reputations:
    164
    Code:
    #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 вызывать вот так:
    Code:
    SendGetRequest("192.168.50.2", "/2/1.php?id=1&test=1");
    
     
  4. nc.STRIEM

    nc.STRIEM Members of Antichat

    Joined:
    5 Apr 2006
    Messages:
    1,036
    Likes Received:
    347
    Reputations:
    292
    Это ты под Microsoft Visual писал? прост в Buildere нет такой библиотеки, а Microsoft незнает че такое AfxMessageBox
    Мне нужно это в кансольном режиме, потомуш с визуалкой в buildere элементарно делаеться!
     
    #4 nc.STRIEM, 14 May 2006
    Last edited: 14 May 2006
  5. nc.STRIEM

    nc.STRIEM Members of Antichat

    Joined:
    5 Apr 2006
    Messages:
    1,036
    Likes Received:
    347
    Reputations:
    292
    TaNkist а через telnet как? и получиться ли сделать на бесплатный хост?
    а и еще есле telnet делать там же над несколько команд писать, a system() выполняет команду которая в ней вписана и закрывает cmd !
     
    #5 nc.STRIEM, 14 May 2006
    Last edited: 14 May 2006
  6. Deem3n®

    Deem3n® RTFMSDN

    Joined:
    19 Sep 2005
    Messages:
    378
    Likes Received:
    153
    Reputations:
    164
    оччень странно ... ну можно обойтись и без AfxMessageBox

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

    nc.STRIEM Members of Antichat

    Joined:
    5 Apr 2006
    Messages:
    1,036
    Likes Received:
    347
    Reputations:
    292
    Deem3n®
    в Builder я знаю как это делаеться с помощью CppWebBrowser, прост мне нужно чеб в кансольке это все сделать, без визуалки! а TClientSocket эт тож с визуалкой! незнаеш можно послать через system() телнетом?
     
  8. Raider

    Raider Elder - Старейшина

    Joined:
    2 May 2005
    Messages:
    40
    Likes Received:
    5
    Reputations:
    4
    Code:
    #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'е, поэтому возможно тебе придётся немного подправить код ...
     
    1 person likes this.
  9. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,021
    Likes Received:
    1,200
    Reputations:
    327
    на самом деле чтобы хотябы разобраться в вопросе, хватит обыкновенного сниффера. неважно на чем кодишь, на си, делфе асме или васике. просто смотришь что отсылает бровсер и все. аналогично делаешь в своей софтине.
     
  10. nc.STRIEM

    nc.STRIEM Members of Antichat

    Joined:
    5 Apr 2006
    Messages:
    1,036
    Likes Received:
    347
    Reputations:
    292
    sn0w я знаю че отсылает браузер, вопрос стоял в том че какими функциями это сделать из exe файла!
    Raider спасиб! потихоньку разбираюсь...