Php API:打开流失败:连接被拒绝

Php API:打开流失败:连接被拒绝,php,json,laravel,api,curl,Php,Json,Laravel,Api,Curl,我正在使用求职API在我的Laravel网站上检索招聘广告。 我创建了一个命令来填充数据库,在本地环境中一切正常,但在生产环境中却没有。出现以下错误: -当我测试Curl访问时: 无法连接到api.com端口80 -当我使用文件获取内容时: 无法打开流:连接被拒绝 我查看了网站上的API面板,但我无法提供我的网站域,我不知道问题来自何方 这是我的密码: public function handle() { $json_string_o = 'http://api.indeed.com/a

我正在使用求职API在我的Laravel网站上检索招聘广告。 我创建了一个命令来填充数据库,在本地环境中一切正常,但在生产环境中却没有。出现以下错误:

-当我测试Curl访问时:

无法连接到api.com端口80

-当我使用文件获取内容时:

无法打开流:连接被拒绝

我查看了网站上的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上遇到过这个问题


非常感谢

尝试添加一个useragent,这有助于解决我卷发时遇到的问题

e、 G:


尝试添加一个useragent,这有助于解决我在卷曲某些东西时遇到的问题

e、 G:


我终于找到了解决我与主机提供商之间问题的方法。这个答案适用于在OVH中主持网站的人

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

  • 在控制器中卷曲
  • 您可以在控制器中使用Curl来调用API,并对结果执行任何操作。您还需要定义一个路由,以便使用浏览器访问控制器。如果在定义的地址打开浏览器,它将工作

  • 在命令中卷曲

    • 创建一个新命令并插入带有curl函数的代码,以从外部源检索数据(在我的例子中确实如此)

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

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

    • 在服务器的根目录下创建一个名为schedule-run.php的新php文件
    $\u服务器['argv']=[ “工匠”, '时间表:运行', ];

    需要目录'/artisan'

    • 在OVH管理面板中定义重定向到schedule-run.php文件的新Cron任务
  • 您最多可以在OVH中每小时运行一次cron任务,这就是为什么需要在schedule函数中将频率定义为“everyMinute”


    希望它能帮助那些在OVH中托管网站的人。我终于找到了解决托管提供商问题的方法。这个答案适用于在OVH中主持网站的人

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

  • 在控制器中卷曲
  • 您可以在控制器中使用Curl来调用API,并对结果执行任何操作。您还需要定义一个路由,以便使用浏览器访问控制器。如果在定义的地址打开浏览器,它将工作

  • 在命令中卷曲

    • 创建一个新命令并插入带有curl函数的代码,以从外部源检索数据(在我的例子中确实如此)

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

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

    • 在服务器的根目录下创建一个名为schedule-run.php的新php文件
    $\u服务器['argv']=[ “工匠”, '时间表:运行', ];

    需要目录'/artisan'

    • 在OVH管理面板中定义重定向到schedule-run.php文件的新Cron任务
  • 您最多可以在OVH中每小时运行一次cron任务,这就是为什么需要在schedule函数中将频率定义为“everyMinute”


    希望它能帮助在OVH中托管其网站的用户

    您的API在邮递员或浏览器中正常工作吗?是的,它在邮递员或浏览器中正常工作吗?是的,它在两者中正常工作谢谢您的回答。我刚刚在API文档中看到,我需要为url提供“userip”和“useragent”参数。我做了,但没用。我尝试在Curl函数中包含用户代理,但它也不起作用。谢谢你的回答。我刚刚在API文档中看到,我需要为url提供“userip”和“useragent”参数。我做了,但没用。我尝试在Curl函数中包含用户代理,但它也不起作用。
    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;
    }
    
    $userAgent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)';
        curl_setopt($openCurl, CURLOPT_USERAGENT, $userAgent);