我需要使用一个输出 XML 的 WebService。在下面的代码 fragment 中:
- getResult 方法可以返回带有 HTML 标签(如
标签)的 XML。
- 所以我必须先手动转换 XML,然后再解析它。
- 但是 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/