как получить данные JSON из необычного порта в php? - PullRequest
0 голосов
/ 10 ноября 2018

У меня есть 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')

но это не работает

Ответы [ 2 ]

0 голосов
/ 10 ноября 2018

У вас есть несколько возможностей получить ваши данные.

Сначала вы можете использовать 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 - это скрипт, который пытается получить данные.

Тогда, если вы запустите php -S localhost:8080 -t . в каталоге, где находится server.php , вы можете запустить клиента.

Обратите внимание, что вы можете настроить поведение file_get_contents , задав ему параметр context . См. stream_context_create документацию, чтобы узнать больше об этом.

Этот ответ нацелен на то, чтобы показать, что можно получить данные, используя file_get_contents, но если вам нужны некоторые конкретные параметры для получения ваших данных, такие как настройка прокси-сервера, порта или чего-то более сложного, которые просто читают файл, я предлагаю использовать HTTP-функция или библиотека, например cURL или Guzzle.

0 голосов
/ 10 ноября 2018
$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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...