Клиентский скрипт на подключения к серверу через API

ALIEN900

Писатель
Регистрация
27 Май 2012
Сообщения
3
Реакции
0
Добрый день. пытаюсь разобраться с api но не чего не получается.. ошибка 400 и все, где допускаю ошибку подскажите если знаете)
Код:
<?php
// 1. инициализация
$token = 'api_key=********';
$branch_id = 'branch_id';
$order_type = 'order_type';
$brand = 'brand';
$model = 'model';
$serial = 'serial';
$ch = curl_init();
// 2. указываем параметры, включая url
curl_setopt($ch, CURLOPT_URL, 'https://api.*******');
//curl_setopt($ch,CURLOPT_HTTPAUTH, '********');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,'token=$token&branch_id=$branch_id&order_type=$order_type&brand=$brand&model=$model&serial=$serial');
curl_setopt($ch, CURLOPT_HEADER, 0);
// 3. получаем HTML в качестве результата
$output = curl_exec($ch);
$info = curl_getinfo($ch);
echo 'Took ' . $info['total_time'] . ' seconds for url ' . $info['url'];
// 4. закрываем соединение
curl_close($ch);
?>

так же на самом сервере как утверждают имеется рабочий скрипт
Код:
curl -X POST https://api.****** \
     -d "api_key=*****"


{
    "token": "*******",
    "success": true
}
только каким бы способом не подключал этот скрипт, не чего не происходит. если я правильно понимаю, у меня не совсем правильно составлен POST запрос. а подключение и авторизация проходит нормально
 
400 - Bad Request. Эту ошибку, скорее всего, отдает сам скрипт, так как ты что-то неверно формируешь.
Ну и, разумеется, не зная, что и куда ты отправляешь, помочь будет сложно.
 
может вместо показа ошибок интерпретатора 400 ошибка происходит. Попробуй что то с ошибкой прописать -какой результат будет? типа: <?php echo test;
 
может вместо показа ошибок интерпретатора 400 ошибка происходит. Попробуй что то с ошибкой прописать -какой результат будет? типа: <?php echo test;
пробовал ставить тест. на странице просто тест показался и все. создал новую страницу с новым кодом
Код:
<?php
    // данные для запроса
    $postData = array(
        'token' => '*******',
        'branch_id' => '2',
        'order_type' => '1',
        'custom_fields' =>  '{\"key\": \"value\"}'
    );
    function funct($token)
    {
     $token = func_num_args();
    "token: $*******";
}
    define("DEBUG", true); 
          $db->Debug = DEBUG; 
    // получить контент для запроса
    function getContent($postData) {
        global $postData;
     // контент для отправки
    //    $content = '';
       
        // данные для отправки
        foreach($postData as $token => $val) { 
            $content .= '--' . $boundary . "\n"; 
            $content .= 'Content-Disposition: form-data; name="' . $token . '"' . "\n\n" . $val . "\n"; 
        }
       
        // файлы для отправки
        foreach($files as $token => $*****) { 
            $content .= '--' . $boundary . "\n"; 
            $content .= 'Content-Disposition: form-data; name="' . $token . '"; filename="' . basename($file) . '"' . "\n"; 
        //    $content .= 'Content-Type: ' . getMimeType($file) . "\n"; 
            $content .= 'Content-Transfer-Encoding: binary' . "\n\n"; 
            $content .= file_get_contents($file) . "\n"; 
        }
       
        // завершаем контент
        $content .= "--$boundary--\n";
       
        return array($boundary, $content);
    }
   
    // создаем подключение
    $ch = curl_init('**********');
    // устанавлваем даные для отправки
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
    // флаг о том, что нужно получить результат
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch,CURLOPT_HTTPAUTH, '*****');
    // отправляем запрос
    $response = curl_exec($ch);
    // закрываем соединение
    curl_close($ch);
   
    var_export($response);
?>
теперь получил
Ошибка доступа (403)
Ошибка проверки CSRF. Запрос отклонён.

Вы видите это сообщение, потому что данный сайт использует защищённое соединение и требует, чтобы заголовок 'Referer' был передан вашим браузером, но он не был им передан. Данный заголовок необходим по соображениям безопасности, чтобы убедиться, что ваш браузер не был взломан, а запрос к серверу не был перехвачен или подменён.

Если вы настроили свой браузер таким образом, чтобы запретить ему передавать заголовок 'Referer', пожалуйста, разрешите ему отсылать данный заголовок по крайней мере для данного сайта, или для всех HTTPS-соединений, или для запросов, домен и порт назначения совпадают с доменом и портом текущей страницы.

В отладочном режиме доступно больше информации. Включить отладочный режим можно, установив значение переменной DEBUG=True.

вроде и написал
define("DEBUG", true);
$db->Debug = DEBUG;
вот только так ничего не произошло... где косячу может знаете? или это долгая история разбираться??
 
Вы видите это сообщение, потому что данный сайт использует защищённое соединение и требует, чтобы заголовок 'Referer' был передан вашим браузером, но он не был им передан.
 
так сам понимаю что где-то в этих двух страницах косячу. не пойму как правильно расставить. что бы теперь ушел токен(ключ авторизации) пока глухо "как в танке"
 
так сам понимаю что где-то в этих двух страницах косячу. не пойму как правильно расставить. что бы теперь ушел токен(ключ авторизации) пока глухо "как в танке"
передай в заголовке реферер, (какой именно хз, но попробуй адрес сервера, который API предоставляет). Почитай curlopt_headers и пример referer.
 
Лучше найди в интернете список рефереров свежий, загони его в массив и рандомный реферер используй в запросе.
 
Лучше найди в интернете список рефереров свежий, загони его в массив и рандомный реферер используй в запросе.
спасибо что откликнулись. в общем проблема была в строчке
$ch = curl_init('**********');
поставил значение curl_setopt($ch, CURLOPT_URL, 'Для просмотра ссылки Войди или Зарегистрируйся') ссылка ругается на сертификат безопасности. прописываю вручную https:// открывается с ошибкой "Ошибка. Запрашиваемая вами страница недоступна"
 
может ли быть проблема в хостинге?
 
Назад
Сверху