@x2roma
Инженер. Учусь веб программированию.

Как отправить tcp/xml запрос к ИС из под PHP?

Имеется информационная система. Из нее в реальном времени надо доставать изображения которые туда поступают "неизвестно как". В документации написано: подключаемся к порту 14074, передаем tcp/xml запросы требуемые: авторизация, параметры подписки, и в реальном времени она будет отдавать данные. Параметры передаются в виде <proto ver="1.0"/> (версия протокола-это первое что нужно отправить для начала связи) в ответ сервер пришлет <proto ver="1.0">OK</proto> . Если соединяться в PuTTy типом RAW и отправить эту фразу, то все получается. В php я стараюсь подключиться через
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) 
  $result = socket_connect($socket, $address, $port);

подключение вроде есть, даже
$msg = '<proto ver="1.0"/>';
$write=socket_write($socket, $msg, strlen($msg));

возвращает размер отправленных данных. Но считывать начинаю - либо висит и тайм аут, либо возвращает пустую строку(ну когда как, потому что перепробовал миллион параметров и примеров из инета).

Подключение с помощью
$fp = stream_socket_client("tcp://www.example.com:80", $errno, $errstr, 30); 
if (!$fp) { 
echo "$errstr ($errno)<br />\n"; 
} else { 
fwrite($fp, "GET / HTTP/1.0\r\nHost: www.example.com\r\nAccept: */*\r\n\r\n"); 
while (!feof($fp)) { 
echo fgets($fp, 1024); 
} 
fclose($fp); 
}

так же не дает результатов. Я не знаю как получить ответ от этой заразы!
  • Вопрос задан
  • 610 просмотров
Пригласить эксперта
Ответы на вопрос 1
@smple
если в php.ini не запрещенно можно делать проще

$result = file_get_contents('www.example.com');

если порт не стандартный лучше использовать curl

$curl = curl_init('http://nexusdigital.agency/API/....'); 
curl_setopt($curl, CURLOPT_PORT, 81); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 81); 
$result = curl_exec($curl);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы