我正在尝试使用ICS(Overbyte的 I nternet C omponent S uite)进行REST服务调用,特别是使用TSslHttpCli。如果没有参数,我可以进行调用,但无法确定如何传递参数。此调用适用于POSTMAN。
在Delphi Tokyo中,我有以下代码,并传递BeforeHeaderSend例程中的参数。应该注意,这是一个GET请求。我已将ICS附带的Google Search JSON示例作为起点。
procedure TGoogleSearchJsonClientForm.GoogleGetButtonClick(Sender: TObject);
const
Zero : byte = 0;
var
DataStream : TMemoryStream;
myString : String;
begin
DataStream := TMemoryStream.Create;
httpCli1.URL := 'https://<URL removed>/csv/csv_file_test';
HttpCli1.RcvdStream := DataStream;
try
HttpCli1.Get;
MyString := StreamToString(DataStream);
DisplayMemo.Lines.Add(MyString);
except
on E:Exception do
Display('Failed. ' + E.ClassName + ': ' + E.Message);
end;
...
end;
我在BeforeHeaderSend代码中设置我的参数......
procedure TGoogleSearchJsonClientForm.HttpCli1BeforeHeaderSend(Sender: TObject;
const Method: string; Headers: TStrings);
begin
headers.AddPair('DEBUG', 'MY_PARAM');
end;
返回的错误是“错误请求”。知道我做错了什么吗?在单步执行代码时,它在执行“HttpCli1.Get;”
行后失败了答案 0 :(得分:0)
变量的命名意味着使用不支持https的客户端。使用不带SSL的http(http://
)或SSLHttpClient类。
答案 1 :(得分:0)
您可能需要添加内容类型:
<body style="background:red">
<i class="fas fa-times-circle fa-2x"></i>
</body>
可能您的问题来自此:
HttpCli1.ContentTypePost := 'application/json';
尝试:
headers.AddPair('DEBUG', 'MY_PARAM');