TidHttp сообщение с URL-сегментом - PullRequest
0 голосов
/ 09 января 2020

Я использую TidHttp-компонент для отправки сообщения в конечную точку с параметром URL-сегмента, а также JSON -данных в пользовательском заголовке. В REST-Debugger все работает, но я не знаю, как добавить параметры в код. По сути, мой код выглядит так:


IdHTTP1.Request.ContentType := 'application/json' ;
IdHTTP1.Request.CustomHeaders.AddValue('Authorization',Token );
IdHTTP1.Request.CustomHeaders.AddValue('X-Api-Key',APIKEY );

//deliveryOrderId is a URL-SEGMENt, HOW ??
// this does not work ?
IdHTTP1.Request.CustomHeaders.AddValue('deliveryOrderId', deliveryOrderID );

 url := ‘https://api.staging.floriday.io/apps/delivery-orders/{deliveryOrderId}/auction’

streamParameters := TStringStream.Create( makeDeliveryOrderJSON ) ;

IdHTTP1.Post( url , streamParameters) ;  <---- BAD REQUEST

Ниже некоторых скриншотов REST-Debugger,

любая помощь очень ценится!

С уважением,

Дирк.

enter image description here

enter image description here

1 Ответ

0 голосов
/ 09 января 2020

URL-сегменты являются функцией среды REST Embarcadero, они не являются частью самого HTTP-запроса и не применяются к другим HTTP-библиотекам, таким как Indy's TIdHTTP. То, что вы ищете, это простая подстановка строки в самом URL, например:

IdHTTP1.Request.ContentType := 'application/json' ;
IdHTTP1.Request.CustomHeaders.AddValue('Authorization', Token);
IdHTTP1.Request.CustomHeaders.AddValue('X-Api-Key', APIKEY);

url := 'https://api.staging.floriday.io/apps/delivery-orders/{deliveryOrderId}/auction';
url := StringReplace(url, '{deliveryOrderId}', deliveryOrderID);
// or simply:
// url := 'https://api.staging.floriday.io/apps/delivery-orders/' + deliveryOrderID + '/auction';

streamParameters := TStringStream.Create(makeDeliveryOrderJSON);

IdHTTP1.Post(url, streamParameters);
...