在base64二进制数据多个文件中编码的Soap消息
最近,我得到了一个新项目来处理SOAP服务,并获取消息并将其发布到基于xml的ASP.NET服务。 问题是我成功地发出了soap请求并获得了消息。 消息如下所示:在base64二进制数据多个文件中编码的Soap消息,soap,binary,base64,rfc,Soap,Binary,Base64,Rfc,最近,我得到了一个新项目来处理SOAP服务,并获取消息并将其发布到基于xml的ASP.NET服务。 问题是我成功地发出了soap请求并获得了消息。 消息如下所示: UEsDBBQAAAAIAAdUe06+NXE0kR4AADLSAQALAAAAUHJvZHVzZS54bWzUXW1z48YN5k/h5EMnmbMsvomSpmkzFCXbjERJoSTb52/p9dq5mbxN2svczy/........ 消息在RFC4648上是Base64二进制的,上面有多个xml文档。 如何从php中的
UEsDBBQAAAAIAAdUe06+NXE0kR4AADLSAQALAAAAUHJvZHVzZS54bWzUXW1z48YN5k/h5EMnmbMsvomSpmkzFCXbjERJoSTb52/p9dq5mbxN2svczy/........
消息在RFC4648上是Base64二进制的,上面有多个xml文档。
如何从php中的代码构造此文档?
此请求中加密的文档是3个xml文件。
我设法从一个名为freeformatter的在线解密程序中获得它们,该程序具有下载功能。
如果我尝试解码结果,我会得到如下结果:
PKT{N�5q4�2�Produse.xml�]ms��
�O��C'��,����i3%یDI�$��o��ڹ��M����/�,��|vL�O�$�/�xv,,�u�s>9?;?....
有解决办法吗?
我对肥皂不太熟悉,所以我不太了解它。谢谢你,但我想解决它。 我将在这里发布解决方案,以便所有面临相同问题的人都能得到回应。 当您有一个base64二进制字符串中的.zip文件时,需要做的第一件事是捕获对txt文件的响应。 假设来自soap的响应称为“$response”,我们需要将其捕获到一个文件中。我们喜欢这样:
$response=$client->\u getLastResponse();
$fille=“response.xml”;
填充内容($fille,$response)代码>
现在我们得到了对xml文件的响应。
接下来要做的事情是从xml值获取响应。
假设我们的值是
`$b64 = "b64.txt";
$dom = new DomDocument();
$dom = load("response.xml");
$data = $dom->getElementByTagName("ResponseFromServer");
$catchb64 = $data;
fille_put_content($b64,$catchb64);`
现在我们在一个fille中得到了干净的Base64二进制字符串。
接下来我们需要创建文档(在本例中是.zip文件)
我们不需要ZipArchive()
函数,因为它是一个zip归档文件,我们需要做的就是创建一个空文档,然后将二进制数据发送给它。
祝你好运 您的问题与SOAP
本身无关。Base64是一种二进制编码。如果你把它解码成二进制文件(11010110 11010001..),你仍然可以得到二进制文件。这些二进制文件可以是文件或其他东西。您应该问问自己,对于通过流或其他方式从硬盘读取的文件,您会做些什么,从而获得一些二进制数组。如果你想建立一个SOAP客户端,我们需要你想如何建立的更多信息。。
`$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`