首页 文章

使用json参数进行Curl GET请求

提问于
浏览
82

我试图通过cURL从命令提示符向远程REST API发送“GET”请求,如下所示:

curl -X GET -H "Content-type: application/json" -H "Accept: application/json"  "http://server:5050/a/c/getName/{"param0":"pradeep"}"

但它没有返回任何输出 . 我试图直接从浏览器ping URL,我能够成功获得响应,我不明白该命令有什么问题 .

基本上我想为远程REST服务设置一个“GET”请求,它通过curl给我一个json数据作为响应 . 任何人都可以指导我,我在做什么错误?我尝试了各种帖子,但他们所有人都在谈论不是关于GET的POST请求 .

5 回答

  • 3

    尝试

    curl -G ...
    

    代替

    curl -X GET ...
    

    通常您不需要此选项 . 通过使用专用命令行选项来调用各种GET,HEAD,POST和PUT请求 .

    此选项仅更改HTTP请求中使用的实际单词,它不会改变curl行为的方式 . 因此,例如,如果您想要发出正确的HEAD请求,使用-X HEAD就不够了 . 您需要使用-I, - head选项 .

  • 14

    这应该工作:

    curl -i -H "Accept: application/json" "server:5050/a/c/getName{"param0":"pradeep"}"
    

    用户选项-i而不是x .

  • 8

    如果要在正文中发送数据,则必须创建 POSTPUT 而不是 GET .

    对我来说,看起来你正在尝试发送与 GET 无关的query with uri parameters,你也可以将这些参数放在 POSTPUT 等等 .

    查询是一个可选部分,由问号(“?”)分隔,其中包含本质上不是分层的其他标识信息 . 查询字符串语法不是一般定义的,但它通常被组织为一对=对,其中的对由分号或符号分隔 .

    例如:

    curl http://server:5050/a/c/getName?param0=foo&param1=bar
    
  • 6

    GET采用名称值对 .

    尝试以下方法:

    curl http://server:5050/a/c/getName/?param1=pradeep

    要么

    curl http://server:5050/a/c/getName?param1=pradeep

    顺便说一下,常规REST看起来应该是这样的

    curl http://server:5050/a/c/getName/pradeep 如果在GET URL中使用JSON,则不是标准方式 .

  • 111

    对于用户名和密码保护的服务,请使用以

    curl -u admin:password -X GET http://172.16.2.125:9200 -d '{"sort":[{"lastUpdateTime":{"order":"desc"}}]}'
    

相关问题