http запрос

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

KUKA
новенький
Сообщения: 46
Зарегистрирован: 22.02.2012 20:54:19

http запрос

Сообщение KUKA »

В общем мне необходимо послать POST запрос на сервер, как мне это сделать?
заранее благодарю.
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

KUKA, Вам сюда
Аватара пользователя
Ichthyander
энтузиаст
Сообщения: 701
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань
Контактная информация:

Сообщение Ichthyander »

Там в начале топика начато совсем не с того. Сокращаю время поисков.
Используйте Synapse модуль HTTPSend.
Функция THTTPSend.HTTPMethod('POST', URL).
KUKA
новенький
Сообщения: 46
Зарегистрирован: 22.02.2012 20:54:19

Сообщение KUKA »

Ichthyander писал(а):Используйте Synapse модуль HTTPSend.Функция THTTPSend.HTTPMethod('POST', URL).

Спасибо.
Там примеры правда наворочены сильно и не совсем понятно как передать какие-то переменные

Ну вот пишу

Код: Выделить всё

var HTTP: THTTPSend;
begin
...
  HTTP:=THTTPSend.Create;
  HTTP.MimeType:='application/x-www-form-urlencoded';
  if HTTP.HTTPMethod('POST','http://www.webdelphi.ru') then
    ...
end;


в then'е что надо написать что бы передать какие-то значения?
Аватара пользователя
B4rr4cuda
энтузиаст
Сообщения: 693
Зарегистрирован: 28.12.2007 06:48:35

Сообщение B4rr4cuda »

вот пример:

Код: Выделить всё

httpsend:=THTTPSend.Create;
  try
    sdate:=inttostr(YearOf(ADate))+ smonth+sday;
    UrlData:='PCAction=TakeRecep&AcceptDate='+sdate+'&AcceptDays=1';
    //пост запрос
    httpsend.Document.Write(Pointer(URLData)^, Length(URLData));
    httpsend.MimeType:='application/x-www-form-urlencoded';

    httpResult:=httpsend.HTTPMethod('POST',aURL);

      if httpResult then begin ts.LoadFromStream(httpsend.Document); bla-bla-bla end;
  finally
    FreeAndNil(httpsend);
  end;

ts - TStringList
KUKA
новенький
Сообщения: 46
Зарегистрирован: 22.02.2012 20:54:19

Сообщение KUKA »

B4rr4cuda писал(а):вот пример:

Код: Выделить всё

httpsend:=THTTPSend.Create;
  try
    sdate:=inttostr(YearOf(ADate))+ smonth+sday;
    UrlData:='PCAction=TakeRecep&AcceptDate='+sdate+'&AcceptDays=1';
    //пост запрос
    httpsend.Document.Write(Pointer(URLData)^, Length(URLData));
    httpsend.MimeType:='application/x-www-form-urlencoded';

    httpResult:=httpsend.HTTPMethod('POST',aURL);

      if httpResult then begin ts.LoadFromStream(httpsend.Document); bla-bla-bla end;
  finally
    FreeAndNil(httpsend);
  end;

ts - TStringList


Ок, а как-нибудь для паскаля без использования модулей типа Classes и режима совместимости с объектным паскалем и делфи можно? Все написано так, что при работе хотя бы в одном из этих режимов идут лаги
Аватара пользователя
B4rr4cuda
энтузиаст
Сообщения: 693
Зарегистрирован: 28.12.2007 06:48:35

Сообщение B4rr4cuda »

KUKA писал(а):Ок, а как-нибудь для паскаля без использования модулей типа Classes и режима совместимости с объектным паскалем и делфи можно?

Можно, разрешаю)
KUKA
новенький
Сообщения: 46
Зарегистрирован: 22.02.2012 20:54:19

Сообщение KUKA »

B4rr4cuda писал(а):Можно, разрешаю)

(facepalm)
Climber
постоялец
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Сообщение Climber »

Я столкнулся с подобной задачей буквально месяц назад. Угробил дня три на изучение разных вариантов (вплоть до скачивания пиратской - ай-ай-ай - Delphi 7 и триальной XE2) и попытки заставить их работать без танцев с бубном. В итоге проще всего получилось с утилитой curl (нагуглите самостоятельно). Она вроде бы умеет все, что надо, включая скачивание/закачивание файлов, ssl и прочие страшные слова. У меня она в основном AJAX имитирует. Это отдельный экзешник с библиотекой, для запуска рекомендую использовать класс TProcess из модуля process.

P. S. "Проще", конечно же, получилось в Delphi, но это либо пиратка, либо 30-дневный триал, и при этом еще и не кроссплатформенно.
KUKA
новенький
Сообщения: 46
Зарегистрирован: 22.02.2012 20:54:19

Сообщение KUKA »

Climber писал(а):Я столкнулся с подобной задачей буквально месяц назад. Угробил дня три на изучение разных вариантов (вплоть до скачивания пиратской - ай-ай-ай - Delphi 7 и триальной XE2) и попытки заставить их работать без танцев с бубном. В итоге проще всего получилось с утилитой curl (нагуглите самостоятельно). Она вроде бы умеет все, что надо, включая скачивание/закачивание файлов, ssl и прочие страшные слова. У меня она в основном AJAX имитирует. Это отдельный экзешник с библиотекой, для запуска рекомендую использовать класс TProcess из модуля process.

P. S. "Проще", конечно же, получилось в Delphi, но это либо пиратка, либо 30-дневный триал, и при этом еще и не кроссплатформенно.


Огромное спасибо, отличный модуль и очень простой :wink:

Добавлено спустя 33 минуты 56 секунд:
Только там какая-то проблема, модуль оказался очень стар, и не захотел компилироваться, бинарников curlobj.pas ни у кого не будет?
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Модуль libcurl есть в стандартных пакетах.
KUKA
новенький
Сообщения: 46
Зарегистрирован: 22.02.2012 20:54:19

Сообщение KUKA »

Mr.Smart писал(а):Модуль libcurl есть в стандартных пакетах.

че-то я его там не нашел, в папках units его нет
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

/fpcsrc/packages/libcurl/src
KUKA
новенький
Сообщения: 46
Зарегистрирован: 22.02.2012 20:54:19

Сообщение KUKA »

Mr.Smart писал(а):/fpcsrc/packages/libcurl/src

Он там не полный и требует еще какой-то unixtype которого нет в исходниках
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

KUKA, этот файл лежит в папке /rtl/unix
Ответить