-2

我的 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();

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

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

4

1 回答 1

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 文档响应。然后我可以在树上执行任何我想要的操作来提取我正在寻找的数据。

于 2009-03-09T14:18:34.720 回答