Что самый простой путь состоит в том, чтобы назвать URL POST Http с помощью Delphi?

Вопросительный знак - это оператор с нулевым условием ( https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/null-conditional-operators ) , Короче и точнее писать, если вы используете C # 6 или выше.

34
задан 4 revs, 2 users 92% 23 May 2017 в 12:10
поделиться

3 ответа

Используя Инди. Поместите свои параметры в StringList (name=value) и просто назовите Сообщение с URL и StringList.

function PostExample: string;
var
  lHTTP: TIdHTTP;
  lParamList: TStringList;
begin
  lParamList := TStringList.Create;
  lParamList.Add('id=1');

  lHTTP := TIdHTTP.Create;
  try
    Result := lHTTP.Post('http://blahblahblah...', lParamList);
  finally
    lHTTP.Free;
    lParamList.Free;
  end;
end;
44
ответ дан 27 November 2019 в 16:40
поделиться

Снова, библиотека Synapse TCP/IP к спасению. Используйте стандартную программу HTTPSEND HTTPPostURL.

function HttpPostURL(const URL, URLData: string; const Data: TStream): Boolean;

Ваш URL был бы ресурсом для регистрации также, URLDATA будет данными формы, и результаты XML возвратились бы как поток в ДАННЫХ.

8
ответ дан 27 November 2019 в 16:40
поделиться

Вот пример использования Indy для отправки JPEG на веб-сервер, на котором запущена Галерея

У меня есть больше примеров такого рода вещей (я использую их в заставке. написал на Delphi для проекта галереи, доступного здесь , или дополнительную информацию на веб-сайте галереи здесь ).

Я полагаю, что важным моментом является то, что JPEG передается в виде потока .

procedure AddImage(const AlbumID: Integer; const Image: TStream; const ImageFilename, Caption, Description, Summary: String);
var
  Response: String;
  HTTPClient: TidHTTP;
  ImageStream: TIdMultipartFormDataStream;
begin

  HTTPClient := TidHTTP.Create;

  try
    ImageStream := TIdMultiPartFormDataStream.Create;
    try
      ImageStream.AddFormField('g2_form[cmd]', 'add-item');
      ImageStream.AddFormField('g2_form[set_albumId]', Format('%d', [AlbumID]));
      ImageStream.AddFormField('g2_form[caption]', Caption);
      ImageStream.AddFormField('g2_form[force_filename]', ImageFilename);
      ImageStream.AddFormField('g2_form[extrafield.Summary]', Summary);
      ImageStream.AddFormField('g2_form[extrafield.Description]', Description);

      ImageStream.AddObject('g2_userfile', 'image/jpeg', Image, ImageFilename);

      Response := HTTPClient.Post('http://mygallery.com/main.php?g2_controller=remote:GalleryRemote', ImageStream);
    finally
      ImageStream.Free;
    end;
  finally
    HTTPClient.Free;
  end;
end;
15
ответ дан 27 November 2019 в 16:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: