older post类似,我尝试使用以下命令通过JAX-WS访问Web服务:

Dispatch<Source> sourceDispatch = null;
sourceDispatch = service.createDispatch(portQName, Source.class, Service.Mode.PAYLOAD);
Source result = sourceDispatch.invoke(new StreamSource(new StringReader(req)));
System.out.println(sourceToXML(result));


哪里:

private static String sourceToXML(Source result) {
    Node rootNode= null;
    try {
        TransformerFactory factory = TransformerFactory.newInstance();
        Transformer transformer = factory.newTransformer();
        DOMResult domResult = new DOMResult();
        transformer.transform(result, domResult );
        rootNode = (Node) domResult.getNode();
  } catch (TransformerException e) {
        e.getMessage();
  }

    return rootNode.getFirstChild().getNodeValue();
}


但出现错误“当前事件不是START_ELEMENT空而是2”(我认为是在变压器上)

我究竟做错了什么 :(

最佳答案

大概是从解析器开始的。我想说堆栈跟踪会有所帮助,但是Xerces / Xalan倾向于将其搞乱。

显而易见的步骤:


尝试将结果看成一个字符串。
尝试使用解析器进行解析,暂时忽略转换器。
尝试找出错误的确切原因。

07-25 20:13