Rest 如何发布内容类型为';多部分/表单数据';在德尔福休息?

Rest 如何发布内容类型为';多部分/表单数据';在德尔福休息?,rest,delphi,https,firemonkey,indy,Rest,Delphi,Https,Firemonkey,Indy,我正在尝试使用多部分/表单数据作为内容类型向RESTAPI发送请求 我总是得到“HTTP/1.1500内部错误”作为响应 我尝试向需要application/x-www-form-urlencoded的方法发送请求,但成功了 如何使用多部分/表单数据,从API中获得成功响应 这是我的密码: procedure TForm10.Button1Click(Sender: TObject); var RESTClient1: TRESTClient; RESTRequest1: TRESTRe

我正在尝试使用
多部分/表单数据
作为内容类型向RESTAPI发送请求

我总是得到“HTTP/1.1500内部错误”作为响应

我尝试向需要
application/x-www-form-urlencoded
的方法发送请求,但成功了

如何使用
多部分/表单数据
,从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组件通过以下方法具有自己的内置<代码>多部分/表单数据功能:

步骤t用于M10。按钮1单击(发件人:ToObject);
变量
RESTClient1:TRESTClient;
RESTRequest1:TRESTRequest;
strImageJSON:string;
开始
RESTClient1:=TRESTClient.Create('http://192.168.1.172:81/');
尝试
RESTRequest1:=TRESTRequest.Create(无);
尝试
RESTRequest1.方法:=TRESTRequestMethod.rmPOST;
RESTRequest1.Resource:=“api/Mobile/MobileLoginControl”;
RESTRequest1.AddParameter('Email','tugba。xx@allianz.com.tr,TRESTRequestParameterKind.pkREQUESTBODY);
RESTRequest1.AddParameter('Password','xxxx',TRESTRequestParameterKind.pkREQUESTBODY);
RESTRequest1.客户端:=RESTClient1;
RESTRequest1.执行;
strImageJSON:=RESTRequest1.Response.Content;
最后
洗手间1.免费;
结束;
最后
RESTClient1.免费;
结束;
结束;

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

时,也许您在Indy中找到了一个解决方案,这就是为什么我给它加了标签@谢谢。我只是尝试了一下,发现内容类型是以“multipart/formdata”的形式发送的。然而,当我检查我发送的内容时,它只是最后一个参数“Password”。我也需要发“电子邮件”。我怎样才能把它们都寄出去@雷米Lebeau@RuhiGoktas这就是为什么我讨厌Embarcadero的REST框架。他们把它复杂化了,实际上效果不好。如果使用
Params.AddItem()
而不是
AddParameter()
,是否会出现相同的问题?尝试了该操作后,出现了相同的错误。实际上,后端地址与TLS1.2一起使用https。当它使用http时,我能够获得成功。当它使用http时,我能够通过TIdHttp获得成功。我应该从某处升级吗?或者是否有其他方法可以获得响应?使用
TIdHTTP
,您可以在SSLIOHandler的
SSLOptions.SSLVersions
属性中启用TLS 1.2。我不知道
TRESTClient
是否支持TLS1.2。