最近,我有一个新项目可以处理SOAP服务,并可以基于XML将消息获取和发布到ASP.NET服务。 问题是我设法提出了要求并获得消息。 消息看起来像这样:
UEsDBBQAAAAIAAdUe06+NXE0kR4AADLSAQALAAAAUHJvZHVzZS54bWzUXW1z48YN5k/h5EMnmbMsvomSpmkzFCXbjERJoSTb52/p9dq5mbxN2svczy/........
该消息是RFC 4648上的Base64 Binary,上面带有多个xml文档。 我如何从php中的代码构建此文档? 此请求中加密的文档是3个xml文件。 我设法从一个名为freeformatter的具有下载功能的在线decriptor中获得了它们。 如果我尝试解码结果,我会得到类似的东西:
PKT{N�5q4�2�Produse.xml�]ms��
�O��C'��,����i3%یDI�$��o��ڹ��M����/�,��|vL�O�$�/�xv,,�u�s>9?;?....
有解决方案吗? 我是SOAP的新手,所以我不太了解它。 非常感谢。
答案 0 :(得分:0)
谢谢,但我竭力解决。
我将在这里发布解决方案,以便每个遇到相同问题的人都能得到答复。
在base64二进制字符串中包含.zip文件时,您需要做的第一件事是捕获对txt文件的响应。
假设来自soap的响应称为“ $ response”,我们需要将其捕获到文件中。我们喜欢这样:
$response = $client -> _getLastResponse();
$fille = "response.xml";
fille_put_contents($fille,$response);
现在,我们得到了对xml文件的响应。
下一步是从xml值获取响应。
可以说我们的值为<ResponseFromServer>
。
`$b64 = "b64.txt";
$dom = new DomDocument();
$dom = load("response.xml");
$data = $dom->getElementByTagName("ResponseFromServer");
$catchb64 = $data;
fille_put_content($b64,$catchb64);`
现在,我们在一个圆角中获得了干净的Base64 Binary字符串。 接下来,我们需要创建文档(在本例中为.zip fille)
`$input_fille = "response.txt"; // the fille with clean base64 binary data on it
$output_fille = "result.zip"; //the fille we need to create on system with the
documents decrypted
$content = fille_get_contents($input_fille); // Reading the content of input fille
$binary = base64_decode($content); // Decoding to binary
fille_put_contents($output_fille,$binary); // Writing to fille the vallues`
我们不需要ZipArchive()
函数,因为它已经是zip存档了,我们要做的就是创建一个空文档,然后将二进制数据发送给它。
干杯,祝你好运!