2013-02-21 38 views
0

我有一个使用一个专有的加密程序,像这样加密的XML文档: exec($programName, $outputArr, $returnVal);如何通过XML传输PHP数组?

所得阵列($outputArr)是序列化并作为在MySQL斑点存储。我正在通过Web界面按需提供此加密阵列。基本上反序列化并在飞行中写入文件。

现在需求发生了变化,我需要将此加密阵列提供给另一台服务器,该服务器使用.net/c#,并且这些服务器又将托管Web界面。我们正在使用响应GET请求并发出XML响应的REST API。

我尝试将数组写入临时文件,然后使用file_get_contents($tempFile)检索文件的内容,然后对产生的字符串进行URL编码,并将其发送到我发送的XML响应的内部。

当然,当新的Web界面将其写入文件(在URL解码之后)时,它不会像它应该的那样。因此,我的意思是我们的专有程序在阅读这个新的结果文件时会引发错误......在某个地方,有数据损坏发生。

我们还尝试了一种C#序列化库,它将PHP数组反序列化为一个c#基元类型,但这不是一个好的解决方案,因为它一直在抛出一堆错误。

有没有更好的方法来做到这一点?

+0

都能在这里找到。 http://stackoverflow.com/questions/1397036/how-to-convert-array-to-simplexml – 2013-02-21 00:23:17

+0

我会尝试,但我不是一个关联数组,这可能会创建无效的XML标记名称... – 2013-02-21 00:31:50

+1

尝试JSON编码,然后打印数组。 http://php.net/json_encode – 2013-02-21 00:41:16

回答

0

为什么不直接访问工作版本,发送到新的服务器之前重新操作它......

<!-- Some XML based wrapper or other logic/output --> 
<?php 
    echo file_get_contents($url_to_working_web_interface); 
?> 
+0

这是一个很好的建议,但Web界面上没有固定的资源。它基本上利用会话信息来生成一个动态链接,然后只是将数组放入浏览器并要求浏览器将其视为要下载的文件。 – 2013-02-21 00:35:47

+0

,虽然这确实让我想知道......应该使用'file_get_contents()'还是其他类似'readfile()'或'fpassthru()'或者只是'fread()'? – 2013-02-21 00:37:44

+0

我希望cURL可以处理它... http://php.net/manual/en/book.curl.php – 2013-02-21 01:28:22