创建TCP套接字连接并通过XML请求发送以获得XML响应?
问题描述:
端口为5792,ip为123.123.123.123。我能够将数据发送到IP,像这样:创建TCP套接字连接并通过XML请求发送以获得XML响应?
$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元素被称为“根”,在这个我可以放置服务请求请求。让我们调用我正在尝试完成的实际服务请求“topUp”。
- 假设有一个名为ROOT的root xml元素,它封装了服务请求“topUp”,那么将这个XML作为字符串提交的标准方式是什么?
- 当服务器无法理解您所说的内容时,希望回应您的请求是否正常?
答
重要的是你知道请求命令的XML结构。在任何情况下,你可以给你以这样的方式太
$message = "<root>"."\n";
$message .= "<request>topUp</request>"."\n";
$message .= "</root>"."\n";
fputs ($fp, $message);
命令,但除非你把你的请求结构定义你可能无法得到你想要的结果。
只有当您告诉您连接的服务器类型时,才能回答这两个问题。如果它是一个HTTP服务器,你可能想看看'cURL'。如果这是自定义的东西,你告诉我们。 – CodeCaster 2012-08-02 08:37:27
这是自定义的,所以我可以安全地假设唯一能告诉我的人是真正的设计师吗? – coderama 2012-08-02 08:46:36
我改变了我的问题一点... – coderama 2012-08-02 08:50:50