Android Annotations + RestTemplate - 获取响应 xml 作为字符串

标签 android xml xml-parsing resttemplate android-annotations

我需要使用一个输出 XML 的 WebService。在下面的代码 fragment 中:

  1. getResult 方法可以返回带有 HTML 标签(如

    标签)的 XML。

  2. 所以我必须先手动转换 XML,然后再解析它。
  3. 但是 RestTemplate 可以很好地处理其他调用。所以我不想丢弃它并在各处编写手动逻辑。

问题:

  • 是否有内置方法可以使用 RestTemplate 将原始 xml 返回为字符串?
  • 我必须编写自定义转换器吗?任何指针?

以下是我的代码:

@Rest(rootUrl = "http://my.root.url", converters ={SimpleXmlHttpMessageConverter.class })
public interface MyRestClient {

   @Get("/path/to/restmethod/{day}")
   MyResponse getResult(int day);  <-------------- Returns null when return type is changed to String

}

我尝试将返回类型设置为字符串。但它返回 null 并出现此错误:无法将类型“null”的值转换为所需类型“java.lang.String”

最佳答案

好的,我自己找到了答案。除了将返回类型更改为 String 之外,我还必须添加 StringHttpMessageConverter 作为转换器。以下 fragment :

@Rest(rootUrl = "http://my.root.url", converters = { StringHttpMessageConverter.class, SimpleXmlHttpMessageConverter.class})

注意: 转换器的顺序很重要。

关于Android Annotations + RestTemplate - 获取响应 xml 作为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22137895/

相关文章:

c# - 使用 Xdocument 进行简单的 Xml 解析

javascript - 如何从 XML 文件中获取另一个标签内的子标签计数并使用 JavaScript 显示其元素

python - 如何使用 ElementTree 正确解析 utf-8 xml?

android - ListView 在一个 block 中只显示一个值

android - 版本控制 app/manifest-merger-release-report.txt?

java - 尝试使用 libGDX 编码时出现错误

java - JAXB - 如果设置了另一个可选属性,是否可以使可选属性成为必需属性?

xml - xml/xsl 命名空间中的 URL 存储在哪里?

java - 如何为 OkHttpClient 设置超时?

java - 如何使用节点名称和特定属性值获取节点及其子节点?