java - Groovy Jersey 客户端无法解码 XML

标签 java xml rest groovy

我有一个 Java Jersey 客户端,可以很好地从 Jersey Web 服务传递的数据将 XML 解码为 POJO,但相同的等效 Groovy 脚本会出现 Parsing 和 NullPointer 异常。有人遇到过这个吗?我需要做一些额外的事情才能使其与 Groovy 一起使用吗?

我们使用 Groovy 进行 Spock 测试。当我使用 Groovy 调用 POST 服务时,我在编码 XML 数据时也遇到了同样的问题。

这是服务器代码:

@GET
@Produces(MediaType.APPLICATION_XML)
public JAXBElement<WidgetType> getWidget() {
    return new JAXBElement<WidgetType>(new QName("widget"), WidgetType.class, widget);
}

这是运行良好的 Java 客户端:

    // Create widget from XSD generated class "WidgetType"
    WidgetType widget = new WidgetType();

    // Get - Fetch data from server "query"
    // Unmarshall Generic XML data to type
    GenericType<JAXBElement<WidgetType>> genericXMLWidgetType = new GenericType<JAXBElement<WidgetType>>() {};
    widget = (WidgetType) widgetService.request(MediaType.APPLICATION_XML_TYPE).get(genericXMLWidgetType).getValue();   

下面是在解码 XML 数据时明显获取ProcessingException 和 NullPointerException 的 Groovy 代码:

// Create widget from XSD generated class "WidgetType"
WidgetType widget = new WidgetType()

// Get - Fetch data from server "query"
// Unmarshall Generic XML data to type
GenericType<JAXBElement<WidgetType>> genericXMLWidgetType = new GenericType<JAXBElement<WidgetType>>() {}
widget = (WidgetType) widgetService.request(MediaType.APPLICATION_XML_TYPE).get(genericXMLWidgetType).getValue()

这是发回的 RAW XML 数据:

<?xml version="1.0" encoding="UTF-8" standalone="true"?>
<widget>
<WidgetId>1</WidgetId>
</widget>

最佳答案

我解决了。 Jersey 有自己的 JAXB API Jar 文件。我把它从 Groovy CLASSPATH 中取出来,现在一切正常了。有一篇关于 GRAILS 因相同错误而失败的类似帖子:

http://grails.1312388.n4.nabble.com/Classloading-goes-bad-tp4431718p4435106.html

关于java - Groovy Jersey 客户端无法解码 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26934491/

相关文章:

rest - 如何为 Azure 存储构建授权 header 获取容器属性 REST API

rest - Slim - 修改中间件内的 POST 请求正文

java - 如何将一个进程的输出重定向为另一进程的输入?

java - 如何获取由 Swing 计时器每秒更新 3 次的 JFormattedTextField 的用户编辑值?

java - JPA OneToMany 双向合并如何实现?

java - dom4j 未加载整个 xml

java - 从 Apache Commons DBUtils 获取日期列表

c# - 如何解析具有相同标签名称的 XML

xml - 解码具有相同名称但元素不同的嵌套数组

java - 如何使用 SecureAnnotationsInterceptor (Apache CXF) 保护多个端点?