如何从php中的异常端口获取JSON数据



我有scout_realtime,我想从中获取stats.json。在调试中,它看起来像

91.205.168.39 - - [10/Nov/2018:09:54:22 CET] "GET /stats.json HTTP/1.1" 200 3896
http://188.165.3.*:5556/ -> /stats.json

如何疯狂地得到它?我试着做这样的事情:

$status = file_get_contents('http://188.165.3.*:5556/stats.gson')

但是不起作用

$url = 'http://188.165.3.*:5556/stats.json';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
curl_close($ch);

好的,我自己做的:D

您可以通过多种方式获取数据。

首先你可以使用cURL。CURL非常适合发送请求。正如您在自己的回答中所示,您只需几行就可以发送HTTP请求。我不会展示CURL的例子,因为它已经在你的答案中完成了
请注意,您可以使用像Guzzle这样的库来发送请求,这更容易。

然后,我不确定哪些代码不起作用,但可以使用file_get_contents在给定端口上获取数据。下面是用PHP 7.2.10测试的一个小例子。

server.php

<?php
echo 'Hi from server';

client.php

<?php
echo file_get_contents('http://localhost:8080/server.php');

server.php充当您试图访问的服务器。它应该返回一个简单的字符串。

client.php是试图获取数据的脚本。

然后,如果在server.php所在的目录中运行php -S localhost:8080 -t .,则可以执行客户端。

请注意,您可以通过为file_get_contents提供上下文参数来配置其行为。请参阅stream_context_create文档以了解更多信息。

这个答案旨在表明使用file_get_contents获取数据是可能的,但如果您需要一些特定的参数来获取数据,如配置代理、端口或更复杂的读取文件的参数,我建议使用HTTP专用函数或库,如cURL或Guzzle。

最新更新