我无法使用 PowerShell(Windows 运行程序)从 YML Gitlab Pipeline 提交 Dropbox API 请求。API 需要将 JSON 作为标头参数传递,并且将该 JSON 编码到 YML Gitlab Pipeline 中不起作用:
`--header "Dropbox-API-Arg:{\"path\":\"/$BUILD_FILENAME\"}"
完整的脚本步骤如下,因为它现在在 YML 中定义:
- C:\Windows\System32\curl.exe -X POST https://content.dropboxapi.com/2/files/upload --header "Authorization:Bearer $DROPBOX_TOKEN" --header "Content-Type:application/octet-stream" --header "Dropbox-API-Arg:{\"path\":\"/$BUILD_FILENAME\"}" --data-binary @$BUILD_FULLFILENAME
响应错误如下:
Error in call to API function "files/upload": HTTP header "Dropbox-API-Arg": could not decode input as JSONcurl: (3) Port number ended with '\'
我可以在运行者所在的同一台 PC 上的 Windows PowerShell 中执行上述命令,而不会出现任何问题:
curl -X POST https://content.dropboxapi.com/2/files/upload --header "Authorization: Bearer XXX" --header "Dropbox-API-Arg: {\"path\": \"/README.md\"}" --header "Content-Type: application/octet-stream" --data-binary @README.md
如何正确编码 JSON 以便它可以按预期执行并传递给 CURL?