【问题标题】:sending an array through cURL POST通过 cURL POST 发送数组
【发布时间】:2013-04-02 02:40:43
【问题描述】:

您好,我正在为移动应用程序测试 REST Web 服务的场景。在测试期间,我需要使用 post 方法将数组发送到我的 php 程序。我正在通过 cURL 控制台进行操作。除了传递一个数组外,其余的工作都很好。请提出任何更改。

以下代码我在 cURL 控制台中传递

C:\curlw32>curl -H "Content-Type: application/json" -X POST http://localhost/slim-login/api/submit -d "{\"specialtyCheckbox\":\"[1,2,3]\"}"

这里是捕获它的 php 代码

$request = Slim::getInstance()->request();
$onsubmit_content = json_decode($request->getBody());
$spec=$onsubmit_content->specialtyCheckbox;
echo json_encode(count($spec));

这里显示的数组长度为 1。

【问题讨论】:

标签: php rest curl slim


【解决方案1】:

请试试这个

 curl -d '{"previous_questions":"['hello', 'world', 'finally']"}' -H "Content-Type: application/json" -X POST http://localhost:5000/quizzes

【讨论】:

    【解决方案2】:

    如果您想通过 CURL 调用传递数组,答案非常简单。将所有输入参数放入数组中 -

    $post = array('prgmCode'=>'3',
                    'userStateCode'=>'TA',
                    );
    

    如果你需要传入一个输入数组,你可以设置

    `$chkBoxArr = array(1,2,3,4);
    $post = array('prgmCode'=>'3',
                    'userStateCode'=>'TA',
                    'chkBoxArr'=>$chkBoxArr
                    );`
    

    您可以使用函数 http_build_query() 从数组中生成查询字符串。

    `$data = http_build_query($post);`
    

    并将数据设置为您的 curl

    `curl_setopt($curlSession, CURLOPT_POSTFIELDS, $data);`
    

    在服务器端检查请求。完毕。 :) :)

    【讨论】:

      【解决方案3】:

      您可以尝试通过 PHP 脚本传递您的数组吗(使用 CURL)

      $ch = curl_init ($url); // your URL to send array data
      curl_setopt ($ch, CURLOPT_POST, true);
      curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); // Your array field
      curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
      $result = curl_exec ($ch);
      
      print_r($result);
      

      【讨论】:

      • 桑迪,我不需要通过脚本运行它,因为我只是在测试它的网络服务,最终将由移动应用程序团队使用。控制台对我来说“省力”很好!!
      【解决方案4】:

      不要在你的数组周围使用引号(如果你想发送一个 json 数组):

      "{\"specialtyCheckbox\":[1,2,3]}"
      

      【讨论】:

      • 实际上不是你不需要需要,而是你不能在那里拥有它们 ;-) "[…]" 只不过是一个文本文字包含这些字符。
      • true ,但我不确定他的预期,因为他说 curl 在 cli 上工作。
      • 感谢 mpm :) 成功了!!实际上我使用引号将它作为字符串传递,这就是为什么它显示它的长度为一个。
      猜你喜欢
      • 1970-01-01
      • 2010-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-25
      相关资源
      最近更新 更多