Действительно API: не удалось открыть поток: соединение отказано - PullRequest
0 голосов
/ 05 июля 2018

Я использую API поиска действительно для поиска объявлений о вакансиях на моем веб-сайте Laravel. Я создал команду для заполнения своей базы данных, и все отлично работает в моей локальной среде, но не на производстве. Появляются эти ошибки:

- Когда я тестирую доступ Curl:

Не удалось подключиться к порту api.indeed.com 80

- Когда я использую file_get_contents:

file_get_contents(http://api.indeed.com/ads/apisearch?publisher=API_KEY&q=fruit+picking&co=au&v=2&latlong=1&fromage=5&limit=10&start=0&format=json&useragent=Mozilla/%2F4.0%28Firefox%29&userip=185.145.156.52):

не удалось открыть поток: соединение отклонено

Я зарегистрировался в панели API на веб-сайте «Действительно», но не могу указать домен своего веб-сайта и не знаю, откуда возникла проблема.

Вот мой код:

public function handle() {
    $json_string_o = 'http://api.indeed.com/ads/apisearch?publisher=PUBLISHER_API_KEY&q='.$request.'&co=au&v=2&latlong=1&fromage=5&limit=10&start=0&format=json&useragent=Mozilla/%2F4.0%28Firefox%29&userip=185.145.156.52';
    $response = $this->curl_json ($json_string_o);
    $json_data_o = json_decode($response, true);
}

 public function curl_json ($url){

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $url);

    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

    $content = curl_exec ($ch);

    if(curl_error($ch))
    {
        echo 'error:' . curl_error($ch);
    } else {
        echo $content;
    }

    curl_close ($ch);

    return $content;
}

Есть ли кто-нибудь, кто когда-либо имел эту проблему с Действительно API?

Большое спасибо

Ответы [ 2 ]

0 голосов
/ 14 июля 2018

Я наконец нашел решение о своей проблеме с моим хостинг-провайдером. Этот ответ для людей, которые размещают свой сайт в OVH.

Если вы попытаетесь вызвать API из команды Laravel, он будет работать на локальном хосте, но не на производстве. На самом деле OVH использует белый список для внешнего подключения, чтобы использовать команду SSH. Итак, доступны два решения:

  1. Завиток в контроллере

Вы можете использовать Curl в контроллере для вызова вашего API и делать с результатом все, что вы хотите. Вам также необходимо определить маршрут для доступа к вашему контроллеру через браузер. Если вы откроете браузер по указанному адресу, он будет работать.

  1. Завиток в команде

    • Создайте новую команду и вставьте свой код с функцией curl для извлечения данных из внешнего источника (действительно в моем случае)

    • Определена команда в консоли / Kernel.php

    protected $ commands = ['App \ Console \ Commands \ YOURCOMMAND']; расписание защищенных функций (Schedule $ schedule) { $ Schedule-> Команда ( 'тип: command_name') -> everyMinute (); }

    • Создайте новый php-файл с именем schedule-run.php в корневом каталоге вашего сервера

    $ _ SERVER ['argv'] = [ «Ремесленник», «График работы: бежать», ];

    требуется DIR . '/ Artisan';

    • Определите новую задачу Cron в панели администратора OVH, которая перенаправляет в файл schedule-run.php

Вы можете запускать задачу cron максимум один раз в час в OVH, поэтому вам нужно определить частоту 'everyMinute' в функции расписания.

Надеюсь, это поможет людям, которые размещают свои сайты в OVH

0 голосов
/ 05 июля 2018

попробуйте добавить добавочный useragent, это помогло мне решить проблему, когда я кое-что свернул.

например:

$userAgent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)';
    curl_setopt($openCurl, CURLOPT_USERAGENT, $userAgent);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...