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。