Программирование на сокете: socket_read, fgets не может получить ответ

Я пытаюсь получить ответ от URL с помощью сокет программирования, но ничего не работает правильно. Я использую PHP, и разработчик, с которым я работаю, говорит мне, что мне нужно открыть сокет, отправить запрос, а затем я должен получить ответ JSON. $message это строка, которую нужно отправить, чтобы получить ответ.

Это то, что я пытался до сих пор …

$message = "api\tjson\tget\trooms\n";
$response = fsockopen("142.4.xxx.xxx", 5678);
fputs($response, $message);
fgets($response, 2048);
$data = json_decode($response, true);

А потом я продолжаю анализировать ответ JSON.

Я также пытался,

$message = "api\tjson\tget\trooms\n";
$response = fsockopen("142.4.xxx.xxx", 5678);
fputs($response, $message);
socket_read($response, 2048, PHP_NORMAL_READ);
$data = json_decode($response, true);

Но тогда я получаю сообщение о том, что socket_read не является правильным ресурсом. Любая помощь будет оценена.

0

Решение

Вы должны сделать некоторую проверку ошибок, по крайней мере. Может быть, это поможет:

$message = "api\tjson\tget\trooms\n";
$response = fsockopen("142.4.xxx.xxx", 5678, $errno, $errstr, 30);
if (!$response) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "POST /script.php HTTP/1.1\r\n";
$out .= "Host: www.webste.com\r\n";
$out .= "Content-Type: application/x-www-form-urlencoded\r\n";
$out .= 'Content-Length: ' . strlen($message) . "\r\n\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($response, $out);
fwrite($response, $message);
while (!feof($response)) {
echo fgets($response, 128);
}
fclose($response);
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]