Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как передать параметры GET методом с помощью WinInet? [D5, Win95/98, WinME, NT4, Win2k, WinXP]


LSW ©   (2002-10-04 22:42:00) 

Подскажите пожалуйста как можно передать CGI скрипту данные GETом в доках нашел только POST вот строчка.
InternetOpenURL(hHttpSession," http://www/cgi-bin/myCGI.exe?myParam",nil,0,0,0);
Может кто знает ? Компоненты с FastNet использовать не хочется. Зарание спасибо


LSW   (2002-10-05 11:23:00) [1]

Спасибо за пример


int64   (2002-10-05 02:30:00) [2]

Думаю, сейчас попал правильно :)

function WinINetPostData(Url: string; const Data : string): string;
const
sHeader = "Content-Type: application/x-www-form-urlencoded" + #13#10;
var
hInternetOpen,
hInternetConnect,
hHttpOpenRequest : HINTERNET;
Buffer: array[0..1024] of char;
BytesRead: cardinal;
sServer, sScript : string;
begin
Result := "";
// Parse out stuff
if Pos("http://", Url) > 0 then
Delete(Url, 1, Length("http://"));
sServer := Copy(Url, 1, Pos("/", Url) - 1);
sScript := Copy(Url, Pos(sServer, URL) + Length(sServer), Length(Url));
// Initialize WINET
hInternetOpen := InternetOpen("http generic", INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
if Assigned(hInternetOpen) then
begin
try
// Connect to server
hInternetConnect := InternetConnect(hInternetOpen, PChar(sServer), 80,
nil, "HTTP/1.0", INTERNET_SERVICE_HTTP, 0, 0);
if Assigned(hInternetConnect) then
begin
try
// Start requesting page
hHttpOpenRequest := HttpOpenRequest(hInternetConnect, "POST", PChar(sScript), "HTTP/1.0", "", "text/*", INTERNET_FLAG_RELOAD, 0);
if Assigned(hHttpOpenRequest) then
begin
try
// Add headers/form info
HttpAddRequestHeaders(hHttpOpenRequest, sHeader, Length(sHeader), HTTP_ADDREQ_FLAG_REPLACE or HTTP_ADDREQ_FLAG_ADD);
HttpSendRequest(hHttpOpenRequest, nil, 0, PChar(Data), Length(Data));
// Download junk
FillChar(Buffer, SizeOf(Buffer), 0);
repeat
Result := Result + Buffer;
FillChar(Buffer, SizeOf(Buffer), 0);
InternetReadFile(hHttpOpenRequest, @Buffer, SizeOf(Buffer), BytesRead);
until BytesRead = 0;
finally
InternetCloseHandle(hHttpOpenRequest);
end;
end else
EPostDataError.Create("Unable to request page!");
finally
InternetCloseHandle(hInternetConnect);
end;
end else
EPostDataError.Create("Unable to connect to server!");
finally
InternetCloseHandle(hInternetOpen);
end;
end else
raise EPostDataError.Create("Unable to initialize Wininet");
end;

Разница между POST и GET задаётся в HttpOpenRequest.

P.S. Может лучше FastNet?


int64   (2002-10-05 01:23:00) [3]

Не попал в ветку. Скз.


int64   (2002-10-05 01:22:00) [4]

В таком случае, не надо вешать изменения на onMouseMove.
И смю сюда:
http://delphi.mastak.com/cgi-bin/forum.pl?look=1&id=1033634530&n=5


Наверх

Титульная страница Поиск, карта сайта Написать письмо