первый релиз PEAR::HTTP_Request2

buchenko

Новичок
есть код, работающий с чистым curl.
PHP:
$ch = curl_i();

                curl_setopt($ch, CURLOPT_URL, "http://api.themoviedb.org/3/movie/550/rating?api_key=".self::$_apiKey.
                                                "&guest_session_id=".Yii::app()->user->getState('guest_session_id'));
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
                curl_setopt($ch, CURLOPT_HEADER, FALSE);

                curl_setopt($ch, CURLOPT_POST, TRUE);

                curl_setopt($ch, CURLOPT_POSTFIELDS, "{\"value\": 7.5}");
        //        curl_setopt($ch, CURLOPT_POSTFIELDS, array('api_key' => self::$_apiKey,
        //            'guest_session_id' =>  Yii::app()->user->getState('guest_session_id')));

                curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                    "Accept: application/json",
                    "Content-Type: application/json"
                ));

                $response = curl_exec($ch);
                curl_close($ch);

                var_dump($response);
однако портировать его для работы через HTTP_Request2 у меня не получается. подскажите, плиз, как правильно реализовать?
 

Redjik

Джедай-мастер
а зачем? ну хочешь абстракции запроса - возьми guzzle, хочешь напрямую на сокетах (не curl) - возьми guzzle и настрой ;)

ЗЫ.
Народ, дилемма, как правильно говорить?
Как я сейчас сказал, это колхоз =) Ибо сокеты, они и в африке сокеты, и курл тот же само собой использует тот же сишный socket api
как вот правильно сказать curl vs php? (так тоже неверно ибо реализацию пыха даже особо оберткой то нельзя назвать, синтаксис то процентов на 90 совпадает)
 

buchenko

Новичок
потому что на той компоненте я уже реализовал кучу методов для работы с этим api.
и использовать для одного метода другое - имхо неправильно. да и интересно, почему же оно не работает...
 

buchenko

Новичок
А как именно не получается?…
да по разному. все варианты не сохранил.

PHP:
    public static function setRating($id, $rating)
    {

        self::getConfiguration();

        $request = new HTTP_Request2(self::$_remoteHost . 'movie/' . $id . '/rating?api_key=' . self::$_apiKey .
            '&guest_session_id=' . Yii::app()->user->getState('guest_session_id'));
        $request->setAdapter('HTTP_Request2_Adapter_Curl');
        $request->setMethod(HTTP_Request2::METHOD_POST)
            ->setHeader('Accept: application/json')
            ->setHeader('Content-Type: application/json')
            ->setBody('{\"value\":' . $rating . '}');
//        $url = $request->getUrl();
//        $url->setQueryVariables(array(
//            'package_name' => array('HTTP_Request2', 'Net_URL2'),
//            'status'       => 'Open'
//        ));
//        $url->setQueryVariable('api_key', self::$_apiKey);
//        $url->setQueryVariable('guest_session_id', Yii::app()->user->getState('guest_session_id'));

        $response = $request->send();
        $body = $response->getBody();
        $res = json_decode($body, true);
        if ($response->getStatus() == 200) {
            return $res['status_code'];
        } else {
            return $res['status_message'];
        }
    }
 

AnrDaemon

Продвинутый новичок
Вот прямо с ходу вижу только проблему в том, как ты ответ разбираешь.
Почему ты сначала декодируешь ответ, а потом проверяешь, успешно ли был выполнен реквест?

В остальном, WireShark в руки/зубы/что там у тебя, и смотреть, что происходит.

У меня граббер на HTTP/Request2 с Adapter_Curl работает без сбоев уже три года. Я о нём раз в месяц максимум вспоминаю. когда приходит время чистить логи.
 

buchenko

Новичок
Вот прямо с ходу вижу только проблему в том, как ты ответ разбираешь.
Почему ты сначала декодируешь ответ, а потом проверяешь, успешно ли был выполнен реквест?

В остальном, WireShark в руки/зубы/что там у тебя, и смотреть, что происходит.

У меня граббер на HTTP/Request2 с Adapter_Curl работает без сбоев уже три года. Я о нём раз в месяц максимум вспоминаю. когда приходит время чистить логи.
да ответ то приходит. и разбираю его я без проблем. вопрос в том что сервер возвращает статус 401 и ругается на некорректный запрос. точнее он не получает почему-то apiKey, а когда чисто через курл - то ответ приходит со статусом 200
 

AnrDaemon

Продвинутый новичок
Ещё раз: Берёшь WireShark в руки и сравниваешь два реквеста.
От курла и от твоего кода.
За тебя отладкой никто заниматься не будет.
 
Сверху