创建TCP套接字连接并通过XML请求发送以获得XML响应?

时间:2012-08-02 08:33:59

标签: php xml sockets fsockopen

端口为5792,IP为123.123.123.123。我能够将数据发送到ip,如下所示:

$host = "tcp://123.123.123.123"; 
$port = 5792; 
$errstr = '';
$errno = '';

$fp = fsockopen($host, $port ,$errno, $errstr, 30); 
if (!$fp) {
  print 'COULD NOT CONNECT! <br />';
  echo "$errstr ($errno)<br />\n";
  die();
}
else {
  print 'SUCCESS!<br />'
}

发送似乎也有效:

$message = 'hello';
fputs ($fp, $message );

接收数据时会出现问题:

print fread($fp, 128);

打印:

hello

...到屏幕!换句话说,它正在回应我发送它的内容。现在,我知道所有消息都封装在XML元素中。在此元素中,可以放置服务请求,该请求也封装在XML元素中。

封装的XML元素称为“ROOT”,在此我可以发出服务请求请求。让我们调用实际的服务请求,我正试图完成“topUp”。

  1. 假设有一个名为ROOT的根xml元素,它封装了服务请求“topUp”,那么将这个XML作为字符串提交的标准方法是什么?
  2. 当服务器无法理解您所说的内容时,期望服务器回应您的请求是否正常?

1 个答案:

答案 0 :(得分:1)

了解请求命令的XML结构至关重要。无论如何,你也可以用这样的方式发送命令

 $message = "<root>"."\n";
 $message .= "<request>topUp</request>"."\n";
 $message .= "</root>"."\n";
 fputs ($fp, $message );

但除非您发送定义的请求结构,否则您可能无法获得所需的结果。