2014-10-17 8 views
0

Я хочу отправить некоторые CURL к REST API с использованием PHP Frontend. Краткое описание моего проекта ... Пользователь (мы называем его Антоном) регистрируется в классической форме входа на Startsite. После этого пользователь должен войти в систему, пока не захочет выйти из системы (но это не проблема). Основная задача пользователя - заполнить форму именем проекта и описанием. После отправки данные передаются объекту JSON, который создает проект в программном обеспечении. Когда я запускаю команды CURL вручную через терминал, все работает нормально. Но мой PHP Script, к сожалению, нет.POST CURL в формате JSON с помощью PHP (использование cookie.txt)

Войти отлично работает в терминале

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 прекрасно работает в терминале, но не в 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); 

?> 

Я твердо верю в вашей помощи. Спасибо!

+0

Я думаю, что вам не хватает curl_setopt ($ ч, CURLOPT_COOKIEFILE, имя_директории (__ FILE __) '/ cookie.txt.); // здесь вы читаете cookie от –

+0

. Спасибо Stefan, я добавляю setopt в свой php-код, но никаких существенных изменений для этой функции нет. Массив ( [имя] => Max [далее] => Какой-то описание ) Thats массив $ данных. – Florian

ответ

0

было бы очень очень очень мило с вашей стороны, если кто-то может перевести этот Curl POST. ..

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 

... в PHP с использованием curl_setopt.

Спасибо большое !!!!

Смежные вопросы