使用ICS进行REST服务调用

时间:2018-03-12 20:12:45

标签: rest delphi

我正在尝试使用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;

我要做的是从POSTMAN模拟这个定义(可行)。enter image description here

返回的错误是“错误请求”。知道我做错了什么吗?在单步执行代码时,它在执行“HttpCli1.Get;”

行后失败了

2 个答案:

答案 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');