如何禁用在soap,改装请求中编码的正文数据

时间:2016-12-29 10:56:03

标签: android xml soap retrofit2

我有一个请求数据,其中一个元素将xml作为值。在使用 @Body 将数据发送到服务器时,我的内部xml正在编码(html编码)。由于此服务在服务器端失败。如何禁用内部 xml编码

样品:

<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/soap/envelope/">
   <soap12:Body>
      <UpdateASN xmlns="http://tempuri.org/">
         <SecureCode>VkdWelkyOUJVMDQ9</SecureCode>
         <strXML>&lt;![CDATA[&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;&lt;NewDataSet&gt;&lt;Table&gt;&lt;ASNId&gt;21131248&lt;/ASNId&gt;&lt;ASNLineId&gt;108069195&lt;/ASNLineId&gt;&lt;EANOCC&gt;5051622303470&lt;/EANOCC&gt;&lt;TUQuantityRecevied&gt;2&lt;/TUQuantityRecevied&gt;&lt;ItemDescription&gt;sample 6X300ML&lt;/ItemDescription&gt;&lt;TUSize&gt;6&lt;/TUSize&gt;&lt;TUDespatched&gt;1&lt;/TUDespatched&gt;&lt;/Table&gt;&lt;/NewDataSet&gt;]]&gt;</strXML>
      </UpdateASN>
   </soap12:Body>
</soap12:Envelope>

1 个答案:

答案 0 :(得分:1)

我自己找到了。

以下是我正在做的事情,我已经删除了封闭CDATA内的内部xml,以便在服务器端可以在处理之前对内部xml进行解码和解码。

如果我们将内部xml与CDATA括起来,它将不会对字符串进行解码,并使服务失败。

这是我的最终要求:

<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/soap/envelope/">
   <soap12:Body>
      <UpdateASN xmlns="http://tempuri.org/">
         <SecureCode>VkdWelkyOUJVMDQ9</SecureCode>
         <strXML>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;&lt;NewDataSet&gt;&lt;Table&gt;&lt;ASNId&gt;21131248&lt;/ASNId&gt;&lt;ASNLineId&gt;108069195&lt;/ASNLineId&gt;&lt;EANOCC&gt;5051622303470&lt;/EANOCC&gt;&lt;TUQuantityRecevied&gt;2&lt;/TUQuantityRecevied&gt;&lt;ItemDescription&gt;sample 6X300ML&lt;/ItemDescription&gt;&lt;TUSize&gt;6&lt;/TUSize&gt;&lt;TUDespatched&gt;1&lt;/TUDespatched&gt;&lt;/Table&gt;&lt;/NewDataSet&gt;</strXML>
      </UpdateASN>
   </soap12:Body>
</soap12:Envelope>