Я хочу отправить некоторые 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);
?>
Я твердо верю в вашей помощи. Спасибо!
Я думаю, что вам не хватает curl_setopt ($ ч, CURLOPT_COOKIEFILE, имя_директории (__ FILE __) '/ cookie.txt.); // здесь вы читаете cookie от –
. Спасибо Stefan, я добавляю setopt в свой php-код, но никаких существенных изменений для этой функции нет. Массив ( [имя] => Max [далее] => Какой-то описание ) Thats массив $ данных. – Florian