【问题标题】:Curl GET request is not giving any output in bodyCurl GET 请求未在正文中提供任何输出
【发布时间】:2021-03-16 05:52:20
【问题描述】:

通过 Postman,我正在使用的 Api 是:-

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

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

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

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

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"

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"} }}"

【问题讨论】:

  • shell 不会欢迎这些引号,您应该对查询参数进行 URI 编码。

标签: shell curl get ssl-certificate postman


【解决方案1】:

问题是因为 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 不支持大括号和引号 {} "",而我所做的是将 INPUT_DATA 转换为 URL 格式。所以实际工作的代码就是这个。

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"

【讨论】:

    【解决方案2】:

    在邮递员中,如果它工作,您可以通过单击右侧的代码按钮来生成相等的curl命令到[角,它将为您创建curl代码片段

    【讨论】:

    • 已经尝试过了,但它不起作用。我也找到了解决方案,谢谢:)
    猜你喜欢
    • 2013-06-18
    • 1970-01-01
    • 2013-07-17
    • 2019-09-11
    • 1970-01-01
    • 2016-05-11
    • 2019-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多