确实API:无法打开流:连接被拒绝

时间:2018-07-05 13:31:35

标签: php json laravel api curl

我正在使用Indeed Job Search 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):
     

无法打开流:连接被拒绝

我在Indeed网站上检查了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;
}

有没有有人使用Instant API遇到过这个问题?

非常感谢

2 个答案:

答案 0 :(得分:4)

尝试添加一个用户代理,这有助于我在卷曲东西时为我解决该问题。

e.G:

$userAgent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)';
    curl_setopt($openCurl, CURLOPT_USERAGENT, $userAgent);

答案 1 :(得分:0)

我终于找到了与托管服务提供商有关的问题的解决方案。该答案适用于在OVH中托管其网站的用户。

如果尝试从Laravel命令调用API,它将在localhost中运行,但在生产环境中不起作用。实际上,OVH使用白名单进行外部连接以使用SSH命令。因此,有两种解决方案可用:

  1. 在控制器中卷曲

您可以在控制器中使用Curl来调用您的API并对结果做任何您想做的事情。您还需要定义使用浏览器访问控制器的路由。如果您在定义的地址打开浏览器,它将起作用。

  1. 卷曲命令

    • 创建一个新命令,并使用curl函数插入代码以从外部源检索数据(以我为例)

    • 在Console / Kernel.php中定义了命令

    受保护的$ commands = ['App \ Console \ Commands \ YOURCOMMAND']; 受保护的功能时间表(时间表$ schedule)     {       $ schedule-> command('type:command_name')-> everyMinute();     }

    • 在服务器的根目录下创建一个名为schedule-run.php的新php文件。

    $ _ SERVER ['argv'] = [     '工匠',     'schedule:run', ];

    需要 DIR 。'/ artisan';

    • 在OVH管理面板中定义一个新的Cron任务,该任务将重定向到schedule-run.php文件

您可以在OVH中每小时最多运行一次cron任务,这就是为什么需要在调度功能中将频率定义为“ everyMinute”。

希望它将帮助在OVH中托管其网站的人