Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java(metro)中使用.NET Web服务-XMLNode/XMLDocument使用?_Java_.net_Xml_Jax Ws_Java Metro Framework - Fatal编程技术网

在Java(metro)中使用.NET Web服务-XMLNode/XMLDocument使用?

在Java(metro)中使用.NET Web服务-XMLNode/XMLDocument使用?,java,.net,xml,jax-ws,java-metro-framework,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(java

我对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服务返回的信息。

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

    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));
    }
UserGetDeviceResponse.UserGetDevicesResult j=dp.userGetDevices();
列表n=j.getContent();
如果(n.size()>0)
{
节点z=(节点)n.get(0);
System.out.println(nodeToString(z));
}

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

您确定Java端有XmlNode和XmlDocument吗?这些似乎是C#术语。这句话看起来很愚蠢,但是有很多XML解析器,它们的行为都不同:)好吧,XmlNode/XmlDocument与Java的文档和节点对象有直接的等价物。从WS返回XmlNode/XmlDocuments是MS建议的返回复杂数据的方法。这似乎在WSDL中被正确地理解为“任意”数据,我只是不确定如何从Java端获取它。如果您可以获得LogicalMessageContext,那么您就可以开始工作了。也许dp.getRequestContext()会返回一个。无法进一步帮助您,如果有的话,因为我通常不生成绑定,而是直接处理XML。