PDA

Просмотр полной версии : Отправка на форму!


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
.. а Microsoft незнает че такое AfxMessageBox
оччень странно ... ну можно обойтись и без AfxMessageBox

PS: в следующий раз указывай явно среду разработки - а не " используя сишку"
PPS: для Dephi/С++ есть хорошие справочники, ссылки тут (http://forum.antichat.ru/thread14096.html), и вот в справочнике для 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 спасиб! потихоньку разбираюсь...