使用PHP将CURL POST到JSON(使用Cookie.txt)

时间:2014-10-17 12:57:01

标签: php json curl cookies

我想使用PHP前端将一些CURL发布到REST API。 我项目的简短描述...... 用户(我们称他为Anton)在Startsite上的经典登录表单上登录。之后,用户应该登录,直到他想要注销(但这不是问题)。用户的主要任务是使用项目名称和描述填充表单。提交后,数据将传输到JSON对象,该对象在软件中创建项目。当我通过终端手动运行CURL命令时,一切正常。但遗憾的是我的PHP脚本。

登录在终端

中正常工作
curl -v \
     -c cookie.txt \
     -X POST \
     -F j_username=Anton \
     -F j_password=pw \
     http://test.com/login.json

登录在PHP中正常工作

<?php
        //Login
        error_reporting(E_ALL|E_STRICT);
        ini_set('display_errors', '1');

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, "http://test.com/login.json");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt ($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt');
        curl_setopt ($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt');  
        curl_setopt($ch, CURLOPT_POST, true);

        $data = array(
            'j_username' => 'Anton',
            'j_password' => 'pw',
        );

        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        $output = curl_exec($ch);
        $info = curl_getinfo($ch);
        curl_close($ch);
        ?>

**创建Projekt在Terminal中工作正常,但在php中不行 创建一个Projekt ......我完全不知道! 我如何使用Cookie.txt以及如何使用数据填充数组(-d部分)?

...我怎样才能保持登录以创建项目?

curl -v \
         -b cookie.txt \
         -X POST \
         -H "Content-Type: application/json" \
         -d '{"name":"name12345", "description":"Some Kind of Description"}' \
         http://test.com/productions.json

...编辑 但它实际上不起作用。我有问题使用cookie.txt :(

<?php
// //Create Production

function post_to_url($url, $data) {
   $fields = '';
   foreach($data as $key => $value) { 
      $fields .= $key . '=' . $value . '&'; 
   }
   rtrim($fields, '&');

   $post = curl_init();

   curl_setopt($post, CURLOPT_URL, $url);
   curl_setopt($post, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt');
   curl_setopt($post, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt');
   curl_setopt($post, CURLOPT_POST, count($data));
   curl_setopt($post, CURLOPT_POSTFIELDS, $fields);
   curl_setopt($post, CURLOPT_RETURNTRANSFER, 1);

   $result = curl_exec($post);

   curl_close($post);
}

$data = array(
   "name" => "Max",
   "description" => "Some kind of description"
);


post_to_url("http://test.com/productions.json", $data);

print_r($data);

?>

我非常相信你的帮助。 谢谢!

1 个答案:

答案 0 :(得分:0)

如果有人可以翻译这个卷曲的帖子,你会非常非常善良......

curl -v \
         -b cookie.txt \
         -X POST \
         -H "Content-Type: application/json" \
         -d '{"name":"name12345", "description":"Some Kind of Description"}' \
         http://test.com/productions.json

...使用CURL_SETOPT到PHP。

非常感谢!!!!