Клиентские вызовы PHP json API - PullRequest
       6

Клиентские вызовы PHP json API

0 голосов
/ 30 декабря 2011

Мне нужна помощь в переводе следующих вызовов сценариев оболочки на PHP

curl -3 --cookie /tmp/cookie --cookie-jar /tmp/cookie --insecure --data "login=login" --data "username=admin" --data "password=password" URL-HERE/login

curl -3 --cookie /tmp/cookie --cookie-jar /tmp/cookie --insecure --data "json={'cmd':'get-data', 'id':'1'}" URL-HERE/api

У меня возникли некоторые трудности с первой командой curl.

Получил:

    $curl=curl_init();
    curl_setopt($curl,CURLOPT_RETURNTRANSFER ,1 );
    curl_setopt($curl,CURLOPT_HEADER , 1);
    curl_setopt($curl,CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($curl,CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl,CURLOPT_SSL_VERIFYHOST, FALSE);

    curl_setopt($curl,CURLOPT_COOKIEJAR, "/tmp/cookie");
    curl_setopt($curl,CURLOPT_COOKIEFILE, "/tmp/cookie");
    curl_setopt($curl,CURLOPT_TIMEOUT,10000);
    curl_setopt($curl,CURLOPT_URL,"URL-HERE/login");

    curl_setopt($curl,CURLOPT_POST ,1);
    $post = array(
      "username" => 'admin',
      "password" => 'password',
      "login" => 'login',
    );
    curl_setopt($curl,CURLOPT_POSTFIELDS,$post);
    echo curl_exec($curl);

, который, кажется, всегда обрабатывает форму входа из URL-адреса ЗДЕСЬ / login, и последующие запросы JSON, использующие указанный выше файл cookie, похоже, не выполняются с сообщением об ошибке «необходимо выполнить вход перед выполнением этих запросов».Однако две вышеуказанные команды оболочки работают безупречно.

Правильно ли я считаю, что параметры --data становятся post vars.а данные JSON - это поле сообщения с именем «json», содержимое которого было возвращено json_encode()?

1 Ответ

0 голосов
/ 30 декабря 2011

Вы можете попробовать это: (Я переписал часть своего кода, НЕ проверено)

$url = 'URL-HERE/login';
$username = 'username';
$password = 'password';
$postfields = "login=login&username=$username&password=$password";

$cookie="/tmp/cookie";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt ($ch, CURLOPT_REFERER, $url);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postfields);
curl_setopt ($ch, CURLOPT_POST, 1);
$result = curl_exec ($ch);

curl_close($ch);
echo $result;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...