Форум: "Сети";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];
Внизpost Найти похожие ветки
← →
Prankster © (2004-05-07 23:56) [0]как отправить http-post запрос скрипту?
← →
easy © (2004-05-08 13:15) [1]http://www.sources.ru/delphi/internet/posting_webform.shtml
← →
Rouse_ © (2004-05-08 13:28) [2]
// Вот здесь и идет запрос
function TFWGetThread.GetUrl(const URL: String): String;
var
FSession, FConnect, FRequest: HINTERNET;
FHost, FScript: String;
Ansi: PAnsiChar;
Buff: array [0..1023] of Char;
BytesRead: Cardinal;
begin
Result := "";
// Небольшой парсинг
// вытаскиваем имя хоста и параметры обращения к скрипту
FHost := DelHttp(Url);
FScript := Url;
Delete(FScript, 1, Pos(FHost, FScript) + Length(FHost));
// Инициализируем WinInet
FSession := InternetOpen("DMFR", INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
if not Assigned(FSession) then
begin
ReportString := "Unable to initialize Wininet";
Synchronize(Error);
Exit;
end;
try
// Попытка соединения с сервером
FConnect := InternetConnect(FSession, PChar(FHost), HTTP_PORT, nil,
"HTTP/1.0", INTERNET_SERVICE_HTTP, 0, 0);
if not Assigned(FConnect) then
begin
ReportString := "Unable to connect to server!";
Synchronize(Error);
Exit;
end;
try
// Подготавливаем запрос страницы
Ansi := "text/*";
FRequest := HttpOpenRequest(FConnect, "POST", PChar(FScript), "HTTP/1.0",
"", @Ansi, INTERNET_FLAG_RELOAD, 0);
if not Assigned(FConnect) then
begin
ReportString := "Unable to request page!";
Synchronize(Error);
Exit;
end;
try
// Добавляем заголовки
if not (HttpAddRequestHeaders(FRequest, Header, Length(Header),
HTTP_ADDREQ_FLAG_REPLACE or
HTTP_ADDREQ_FLAG_ADD)) then
begin
ReportString := "Unable add headers/form info.";
Synchronize(Error);
Exit;
end;
// Отправляем запрос
if not (HttpSendRequest(FRequest, nil, 0, nil, 0)) then
begin
ReportString := "Unable send reqest.";
Synchronize(Error);
Exit;
end;
// Получаем ответ от форума
FillChar(Buff, SizeOf(Buff), 0);
repeat
Result := Result + Buff;
FillChar(Buff, SizeOf(Buff), 0);
InternetReadFile(FRequest, @Buff, SizeOf(Buff), BytesRead);
until BytesRead = 0;
finally
InternetCloseHandle(FRequest);
end;
finally
InternetCloseHandle(FConnect);
end;
finally
InternetCloseHandle(FSession);
end;
end;
Ну и отсюда разруливай...
да, uses WinInet, конечно :)
← →
Rouse_ © (2004-05-08 13:39) [3]> easy © (08.05.04 13:15)
Дим, кстати заметь, в коде по твоей ссылке имеется вероятность хорошего такого бряка приложения ...
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.035 c