我有这个卷曲序列,在MS中工作,我正在尝试使用与DelphiXE10.1柏林的Indy的等价性。
卷曲代码如下:
curl -k "https://fakeweb.com/options" --data-binary "{\"name\":\"Name of the Client\",\"email\":\"fake@gmail.com\"}"我尝试过以下代码,但它不起作用
procedure TForm2.Button4Click(Sender: TObject);
const
COMI = Char(34);
var
data: string;
DataToSend : TStringStream;
IdHTTP: TIdHTTP;
Answer: string;
begin
try
data := '{\' + COMI + 'name\' + COMI + ':\' + COMI + 'Name of the Client\' + COMI +
',\' + COMI + 'email\' + COMI + ':\' + COMI + 'fake@gmail.com\' + COMI + '}' ;
DataToSend := TStringStream.Create(data);
IdHTTP := TIdHTTP.Create(Application);
IdHTTP.Request.Accept := 'application/json, text/plain; q=0.9, text/html;q=0.8,';
IdHTTP.Request.ContentType := 'application/json, text/plain; q=0.9, text/html;q=0.8,';
Answer := IdHTTP.Post('https://fakeweb.com/options', DataToSend); //its not the real URL
ShowMessage(Answer);
except on E: Exception do
ShowMessage('Error: '+E.ToString);
end;
end;我总是收到相同的消息: HTTP/1.1 500内部Srever错误。有人能帮我吗?
谢谢。
发布于 2017-05-18 17:01:30
您的代码有三个问题:
COMI常量是不必要的,因为Delphi使用'来引用,所以您可以安全地使用",就像字符串数据中的- is。TIdHTTP.Request.ContentType属性设置为无效值,这也可能导致HTTP错误。TIdHTTP对象并没有完全“泄漏”,但它直到应用程序退出时才被销毁)。如果代码在iOS或Android上运行,则没有泄漏。试一试:
procedure TForm2.Button4Click(Sender: TObject);
var
data: string;
DataToSend : TStringStream;
IdHTTP: TIdHTTP;
Answer: string;
begin
try
data := '{"name":"Name of the Client","email":"fake@gmail.com"}';
DataToSend := TStringStream.Create(data, TEncoding.UTF8);
try
IdHTTP := TIdHTTP.Create(nil);
try
IdHTTP.Request.Accept := 'application/json, text/plain;q=0.9, text/html;q=0.8';
IdHTTP.Request.ContentType := 'application/json';
Answer := IdHTTP.Post('https://fakeweb.com/options', DataToSend);
finally
IdHTTP.Free;
end;
finally
DataToSend.Free;
end;
ShowMessage(Answer);
except
on E: Exception do
ShowMessage('Error: '+E.ToString);
end;
end;https://stackoverflow.com/questions/44046231
复制相似问题