首页 > 解决方案 > Curl GET 请求未在正文中提供任何输出

问题描述

通过邮递员,我正在使用的 Api 是:-

https://myCertManager.com/api/pik/restapi/MyCerts?INPUT_DATA={"operation":{"details"{"Cert_Name":"cert1"}}}

在标头中带有 authtoken"AUTHTOKEN: XXXX-XXXX-XXXX-XXXX"

当我通过邮递员发送获取请求时,我在响应正文中获得了正确的证书

现在我需要通过 curl 命令获取这个证书,所以我创建了这两个命令,但是当我执行它们时,它们连接到服务器,但是响应的主体是空的。

curl -g -k -v -X GET https://myCertManager.com/api/pik/restapt/MyCerts?INPUT_DATA={"operation":{"details"{"Cert_Name":"cert1"}}} -H “授权:XXXX-XXXX-XXXX-XXXX”

curl -k -v -X GET https://myCertManager.com/api/pik/restapt/MyCerts -H "AUTHTOKEN: XXXX-XXXX-XXXX-XXXX" -d "INPUT_DATA={"operation":{"details" {"Cert_Name":"cert1"}}}"

标签: shellcurlgetssl-certificatepostman

解决方案


问题是因为GET参数不支持-d参数。所以这种类型的代码永远不会工作。

curl -k -v -X GET https://myCertManager.com/api/pik/restapt/MyCerts -H "AUTHTOKEN: XXXX-XXXX-XXXX-XXXX" -d "INPUT_DATA={"operation":{"details"{"Cert_Name":"cert1"}}}"

其次,GET参数仅通过 url 本身发送数据,因此INPUT_DATA需要像这样在 URL 本身中

curl -g -k -v -X GET https://myCertManager.com/api/pik/restapt/MyCerts?INPUT_DATA={"operation":{"details"{"Cert_Name":"cert1"}}} -H "AUTHTOKEN: XXXX-XXXX-XXXX-XXXX"

但是 URL dosent 支持大括号和引号{} "",并且我所做的已转换INPUT_DATAURL格式。所以实际的工作代码就是这个。

curl -g -k -v -X GET https://myCertManager.com/api/pik/restapt/MyCerts?INPUT_DATA=%7B%22operation%22%3A%7B%22details%22%7B%22Cert_Name%22%3A%22cert1%22%7D%7D%7D -H "AUTHTOKEN: XXXX-XXXX-XXXX-XXXX"

推荐阅读