TidHttp post 与 URL-Segment
TidHttp post with URL-Segment
我正在使用 TidHttp-component 对具有 URL-Segment 参数的端点执行 post,并且还在自定义 Header 中 JSON-data .在 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、
的部分截图
非常感谢任何帮助!
亲切的问候,
德克
URL-段是 Embarcadero 的 REST 框架的一个特性,它们不是实际 HTTP 请求本身的一部分,也不适用于其他 HTTP 库,如 Indy 的 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);
我正在使用 TidHttp-component 对具有 URL-Segment 参数的端点执行 post,并且还在自定义 Header 中 JSON-data .在 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、
的部分截图非常感谢任何帮助!
亲切的问候,
德克
URL-段是 Embarcadero 的 REST 框架的一个特性,它们不是实际 HTTP 请求本身的一部分,也不适用于其他 HTTP 库,如 Indy 的 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);