确实 API:无法打开流:连接被拒绝
Posted
技术标签:
【中文标题】确实 API:无法打开流:连接被拒绝【英文标题】:Indeed API: failed to open stream: Connection refused 【发布时间】:2018-12-14 00:22:54 【问题描述】:我正在使用 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;
有人遇到过 Indeed API 的问题吗?
非常感谢
【问题讨论】:
您的 API 在邮递员或浏览器中是否正常工作?? 是的,两者都能完美搭配 【参考方案1】:我终于找到了有关我的托管服务提供商问题的解决方案。此答案适用于在 OVH 中托管其网站的人。
如果您尝试从 Laravel 命令调用 API,它将在 localhost 中工作,但在生产环境中不起作用。实际上 OVH 使用白名单进行外部连接以使用 SSH 命令。因此,有两种解决方案:
-
控制器中的卷曲
您可以在控制器中使用 Curl 来调用您的 API 并对结果做任何您想做的事情。您还需要定义一个路由来使用您的浏览器访问您的控制器。如果您在定义的地址打开浏览器,它将起作用。
命令中的卷曲
创建一个新命令并使用 curl 函数插入代码以从外部源检索数据(在我的情况下确实如此)
在 Console/Kernel.php 中定义命令
受保护的 $commands = ['App\Console\Commands\YOURCOMMAND']; 受保护的功能计划(Schedule $schedule) $schedule->command('type:command_name')->everyMinute();
在您的服务器根目录创建一个名为 schedule-run.php 的新 php 文件$_SERVER['argv'] = [ '工匠', '时间表:运行', ];
需要DIR.'/artisan';
在您的 OVH 管理面板中定义一个新的 Cron 任务,该任务重定向到 schedule-run.php 文件您可以在 OVH 中最多每小时运行一次 cron 任务,这就是为什么您需要在调度函数中将频率定义为“每分钟”。
希望它能帮助那些在 OVH 托管网站的人
【讨论】:
【参考方案2】:尝试添加一个用户代理,这有助于在我卷曲一些东西时为我解决问题。
例如:
$userAgent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)';
curl_setopt($openCurl, CURLOPT_USERAGENT, $userAgent);
【讨论】:
感谢您的回答。我刚刚在 API 文档中看到我需要为 url 提供 'userip' 和 'useragent' 参数。我做到了,但它不起作用。我尝试在 Curl 函数中包含用户代理,但它也不起作用。以上是关于确实 API:无法打开流:连接被拒绝的主要内容,如果未能解决你的问题,请参考以下文章