簡體   English   中英

如何在 Delphi REST 中發布 ContentType 為“multipart/form-data”的數據?

[英]How to post data with a ContentType of 'multipart/form-data' in Delphi REST?

我正在嘗試使用multipart/form-data作為內容類型向 REST API 發送請求。

我總是收到“HTTP/1.1 500 內部錯誤”作為響應。

不過,我嘗試向需要application/x-www-form-urlencoded方法發送請求並取得了成功。

如何使用multipart/form-data從我的 API 獲得成功響應?

這是我的代碼:

procedure TForm10.Button1Click(Sender: TObject);
var
  RESTClient1: TRESTClient;
  RESTRequest1: TRESTRequest;
  strImageJSON : string;
  Input: TIdMultipartFormDataStream;
begin
  Input := TIdMultipartFormDataStream.Create;
  Input.Clear;
  Input.AddFormField('Email', 'tugba.xx@allianz.com.tr');
  Input.AddFormField('Password', 'xxxx');
  RESTClient1 := TRESTClient.Create('http://192.168.1.172:81/');
  RESTRequest1 := TRESTRequest.Create(nil);
  RESTRequest1.Method := TRESTRequestMethod.rmPOST;
  RESTRequest1.Resource := 'api/Mobile/MobileLoginControl';
  RESTRequest1.AddBody(Input,TRESTContentType.ctMULTIPART_FORM_DATA);
  RESTRequest1.Client := RESTClient1;
  RESTRequest1.Execute;
  strImageJSON := RESTRequest1.Response.Content;
end;

Embarcadero 的 REST 組件通過TRESTRequest.AddParameter()方法擁有自己的內置multipart/form-data功能:

procedure TForm10.Button1Click(Sender: TObject);
var
  RESTClient1: TRESTClient;
  RESTRequest1: TRESTRequest;
  strImageJSON : string;
begin
  RESTClient1 := TRESTClient.Create('http://192.168.1.172:81/');
  try
    RESTRequest1 := TRESTRequest.Create(nil);
    try
      RESTRequest1.Method := TRESTRequestMethod.rmPOST;
      RESTRequest1.Resource := 'api/Mobile/MobileLoginControl';
      RESTRequest1.AddParameter('Email', 'tugba.xx@allianz.com.tr', TRESTRequestParameterKind.pkREQUESTBODY);
      RESTRequest1.AddParameter('Password', 'xxxx', TRESTRequestParameterKind.pkREQUESTBODY);
      RESTRequest1.Client := RESTClient1;
      RESTRequest1.Execute;
      strImageJSON := RESTRequest1.Response.Content;
    finally
      RESTRequest1.Free;
    end;
  finally
    RESTClient1.Free;
  end;
end;

您不需要使用 Indy 的TIdMultiPartFormDataStream ,尤其是當您不使用 Indy 的TIdHTTP

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM