在linux命令行下curl 提交json数据的问题

http://www.dewen.org/q/3803

我在linux命令行下执行:

        
        
  1. curl -i -d '{"user":{"uid":123,"username":"woshishui"},"baseinfo":"afsdaa"} '  http://www.domain.com/index.php

而index.php里只有一句print_r($_POST);
执行命令后,为啥显示接收不到数据呢?

        
        
  1. HTTP/1.1 200 OK
  2. Server: nginx/0.8.54
  3. Date: Fri, 27 Jul 2012 08:29:34 GMT
  4. Content-Type: text/html; charset=utf-8
  5. Transfer-Encoding: chunked
  6. Connection: keep-alive
  7. Vary: Accept-Encoding
  8. X-Powered-By: PHP/5.3.6
  9. Array
  10. (
  11. )
PanYue
编辑于 2012-07-27
评论 (2)链接 • 2012-07-27 
  • 0
    不是json格式的数据有问题吗? –  小飞 2012-07-27
  • 0
    参数格式:uid=123&username=这样的没问题 –  PanYue 2012-07-27
2个答案

你post的数据没有参数名,这样写就行

       
       
  1. curl -i -X POST -d 'a={"user":{"uid":123,"username":"woshishui"},"baseinfo":"afsdaa"}'  http://www.domain.com/index.php
评论 (1)链接 • 2012-07-27
  • 0
    是呀,请问这是啥原理? –  PanYue 2012-07-27

提交的参数有问题,应该是:

'json={"user":{"uid":123,"username":"woshishui"},"baseinfo":"afsdaa"}'

     
     
  1. curl -i -d 'json={"user":{"uid":123,"username":"woshishui"},"baseinfo":"afsdaa"}' http://www.domain.com/index.php

index.php 接收 为 $_POST['json'];

评论 (3)链接 • 2012-07-27
  • 0
    但是我加参数名,在index.php里这样写也可以收到呢:$data = file_get_contents("php://input");
    print_r($data);
    –  PanYue 2012-07-27
  • 0
    @PanYue file_get_contents("php://input") 这种方式是拿原始的post数据
    而 $_POST 是根据原始数据格式化之后的,所以$_POST 就拿不到了,因为你那数据格式不是post形式,原始数据为 arg1=xxx&arg2=xxx2&arg3[]=xxx0&arg3[]=xxx1 才可以正常获取值
    –  冯义军 2012-07-27
  • 0
    哦,晓得了! –  PanYue 2012-07-27
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值