在使用Retrofit2发出Soap请求时,如何防止String被编码

时间:2018-06-15 06:48:42

标签: android xml soap retrofit

我试图通过这样的肥皂请求:

<soap:Envelope>
  <soap:Body>
    <Data>data='a' & type='b'</Data>
  </soap:Body>
</soap:Envelope>

但它确实发送了:

<Data>data=&apos;a&apos; &amp; type=&apos;b&apos;</Data>

改造将&'编码为&amp;&apos;

所以我甚至无法用'

替换&apos;

这是我的Rrtrofit设置:

new Retrofit.Builder()
    .baseUrl(URL)
    .addConverterFactory(SimpleXmlConverterFactory.create())
    .addConverterFactory(GsonConverterFactory.create())
    .build();

我该如何处理。

有人可以帮助我。

1 个答案:

答案 0 :(得分:0)

您可以指示解析器将<data>内的内容视为CData。 我不确定您使用哪种XML解析器,但是,大多数XML解析器都提供了“CDATA&#39;”。做一些探索。您的XML将如下所示。这样可以确保不会转换特殊字符。

<soap:Envelope>
 <soap:Body>
  <Data><![CDATA[ data='a' & type='b']]></Data>
 </soap:Body>

有关详细信息,请参阅link