如何通过XML传输PHP数组?

我有一个使用专有加密程序加密的XML文档,如下所示:
exec($ programName,$ outputArr,$ returnVal); </ code> </ p>

生成的数组( $ outputArr </ code>)被序列化并存储为MySQL中的blob。 我正在通过Web界面按需提供此加密阵列。 基本上反序列化并动态写入文件。</ p>

现在需求已经改变,我需要将这个加密数组提供给另一个使用 .net / c#</的服务器 strong>,然后将托管Web界面。 我们正在使用REST API来响应GET请求并发出XML响应。</ p>

我尝试将数组写入临时文件,然后使用 file_get_contents($ tempFile)</ code>然后对结果字符串进行URL编码并将其放入我发送的XML响应中。</ p>

当然,当新的Web界面写入时 这个作为一个文件(在URL解码之后),它没有像它应该的那样。 通过这种方式,我的意思是我们的专有程序在读取这个新生成的文件时会引发错误......在此过程中,发生了数据损坏。</ p>

我们还尝试了一个反序列化的C#序列化库 PHP数组到ac#primitive类型,但这不是一个好的解决方案,因为它不断抛出一堆错误。</ p>

有更好的方法吗?</ p>

</ div>

展开原文

原文

I have an XML document that is encrypted using a proprietary encryption program like so: exec($programName, $outputArr, $returnVal);

The resulting array ($outputArr) was serialized and stored as a blob in MySQL. I was making this encrypted array available on demand through a web interface. Basically deserializing and writing to a file on the fly.

Now the requirements have changed and I need to make this encrypted array available to another server which uses .net/c# and which in turn will host the web interface. We are using a REST API that responds to a GET request and sends out an XML response.

I tried writing the array into a temporary file and then retrieving the contents of the file using file_get_contents($tempFile) and then URL encoding the resulting string and putting that inside of the XML response that I was sending.

Of course, when the new web interface writes this out as a file (after URL decoding), it's nothing like it's supposed to be. By that, I mean our proprietary program throws up errors on reading this new resulting file ... somewhere along the way, there's data corruption happening.

We also tried a C# serialization library that deserialized PHP arrays into a c# primitive type but that wasn't a good solution either as it kept throwing up a bunch of errors.

Is there a better way to do this?

dongzhao4036
dongzhao4036 -这个解决方案效果很好!谢谢!
7 年多之前 回复
du532861657
du532861657 谢谢@Oliver-我会尝试并在此发布更新。
7 年多之前 回复
doujia3441
doujia3441 如果您想将数据放入XMLScheme,那么这将是最好的解决方案。
7 年多之前 回复
dongzhaiqiang6108
dongzhaiqiang6108 -我没有。所以你说我应该从file_get_contents()得到base64_encode()生成的字符串?
7 年多之前 回复
douzai6337
douzai6337 你尝试过base64_encoding而不是序列化吗?
7 年多之前 回复
dongshang1529
dongshang1529 尝试JSON编码,然后打印数组。php.net/json_encode
7 年多之前 回复
dongxian1699
dongxian1699 我会尝试,但我的不是一个关联数组,这可能会创建无效的xml标记名称...
7 年多之前 回复
dqmq0654
dqmq0654 这里介绍了它。stackoverflow.com/questions/1397036/...
7 年多之前 回复

1个回答

Why not just access the working version, and re-manipulate it before sending to the new server...

<!-- Some XML based wrapper or other logic/output -->
<?php
  echo file_get_contents($url_to_working_web_interface);
?>
doulan4939
doulan4939 我希望cURL可以处理它... php.net/manual/en/book.curl.php
7 年多之前 回复
dongming4994
dongming4994 虽然这确实让我想知道......我应该使用file_get_contents()还是其他类似readfile()或fpassthru()或者只是fread()?
7 年多之前 回复
douluoqiu4538
douluoqiu4538 这是一个很好的建议,但网络界面上没有固定的资源。 它基本上利用会话信息生成动态链接,然后将数组barfs到浏览器中,并要求浏览器将其视为要下载的文件。
7 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问