在Java(metro)中使用.NET webservice - XMLNode / XMLDocument消费?

时间:2009-03-07 00:03:24

标签: java .net xml jax-ws java-metro-framework

我的Java有点生疏,这是我第一次使用metro / JAX-WS,所以如果这是一个愚蠢的问题我道歉。

我必须编写一个使用.NET Web服务的客户端。我已经掌握了基础知识;我已经从WSDL生成了包装器,我可以创建我的对象和端口并进行调用并获得响应。

    Widgets d = new Widgets();
    WidgetsSoap dp = d.getWidgetsSoap();
    ((BindingProvider)dp).getRequestContext(). put(javax.xml.ws.BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://actualsite/foo.asmx");

    UserGetWidgetsResponse.UserGetWidgetsResult j = dp.userGetWidgets();

webservice的返回值几乎都是XmlDocument或XmlNode。如何从wsimport生成的“UserGetWidgetsResponse.UserGetWidgetsResult”获取调用返回的实际XML?

我有许多这些服务都有很多方法,所以我希望找到一个不需要以任何方式修改生成的包装器的解决方案。我也无法控制Web服务返回的信息。

1 个答案:

答案 0 :(得分:1)

我在周末找到了解决方案,但我不确定这是正确的解决方案:

    UserGetDevicesResponse.UserGetDevicesResult j = dp.userGetDevices();
    List<Object> n = j.getContent();
    if (n.size() > 0)
    {
        Node z = (Node)n.get(0);
        System.out.println(nodeToString(z));
    }

这为我提供了XML文档响应,这正是我所寻求的。然后,我可以在树上执行任何我想要的操作,以提取我正在寻找的数据。