![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как передать параметры 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