我使用的是Delphi 10.2。 我使用 API 提供商提供的工具生成了此 cURL 语句,在该环境中它成功运行并返回结果。
curl --request POST \
--url https://api.netradyne.com/driveri/v1/tenants/N251887947004171/driver/assignment \
--header 'Accept: application/json' \
--header 'Accept-Language: en-US' \
--header 'Authorization: Bearer <access token replaced>' \
--header 'Content-Type: application/json' \
--data '{
"driverID": "48625329",
"vehicleID": "1393",
"action": "login",
"startTimestamp": 1720439154012,
"endTimestamp": 1720439208018
}'
我已经使用 REST 调试器成功重现了另一个 cURL 语句,但我能得到的最好结果是以“400:Bad Request - 0 bytes of data returned...”开头的响应。
REST 调试器文件是:
{
"method": "POST",
"url": "https://api.netradyne.com/driveri/v1/tenants/N251887947004171/driver/assignment",
"resource": "",
"contenttype": "application/json",
"auth": {
"method": "OAUTH2",
"username": "",
"passwordkey": "",
"password": "",
"clientid": "",
"clientsecret": "",
"authcode": "",
"accesstoken": "Bearer <access token replaced>",
"accesstokensecret": "",
"requesttoken": "",
"requesttokensecret": "",
"refreshtoken": "",
"signaturemethod": "",
"responsetype": "code",
"endpointauth": "",
"endpointaccesstoken": "",
"endpointrequesttoken": "",
"endpointredirect": "",
"authscope": ""
},
"parameters": [
{
"name": "Authorization",
"value": "Bearer <access token replaced>",
"kind": "HEADER",
"encode": false
},
{
"name": "Accept",
"value": "application/json",
"kind": "HEADER",
"encode": false
},
{
"name": "Content-Type",
"value": "application/json",
"kind": "HEADER",
"encode": false
},
{
"name": "data",
"value": "{\"driverID\": \"48625329\",\"vehicleID\": \"1393\",\"action\": \"login\",\"startTimestamp\": 1720439154012,\"endTimestamp\": 1720439208018}",
"kind": "BODY",
"encode": false
}
],
"body": ""
}
关于如何让 Delphi 生成此 API 所需的内容有什么想法吗?
我从
accesstoken
字段中删除了“Bearer”,并将 JSON 从参数移至正文。 REST 调试器生成的 JSON 包括 "body": "ZGF0YT17ImRyaXZlcklEIjogIjQ4NjI1MzI5IiwidmVoaWNsZUlEIjogIjEzOTMiLCJhY3Rpb24iOiAibG9naW4iLCJzdGFydFRpbWVzdGFtcCI6IDE3MjA0MzkxNTQwMTIsImVuZFRpbWVzdGFtcCI6IDE3MjA0MzkyMDgwMTh9"
。 在调试器中运行请求会生成 Windows 警报声和“(无响应)”。
当我使用调试器创建 Delphi 组件时,我得到一个 TRESTRequest,其中 Params 中的最后一个参数的名称为
body
,类型为 pkREQUESTBODY
,并且值为空。 我使用 cURL 语句中“数据”的值填充了 body 参数的值,并按下按钮来执行 TRESTRequest 并显示 TRESTResponse 的 Content 属性。 我得到的是
{"data":{"message":"驱动程序集成数据已成功接收。"}}
这是 cURL 语句的预期结果。 耶。