Java 播放框架:解析服务器';s响应为Xml返回空文档

Java 播放框架:解析服务器';s响应为Xml返回空文档,java,xml,playframework-2.0,Java,Xml,Playframework 2.0,我有一个PlayWeb应用程序,可以向服务器发出HTTP请求 请求进行得很顺利:我得到了一个200状态码和Content type=“application/xml”的响应 如果我打印到响应体的stdout,我会看到一个格式良好的Xml文档 但是,如果我尝试从响应创建org.w3c.dom.XML文档 使用WSResponse.asXml(),该方法返回一个空文档 以下是我的代码的相关部分: private WSResponse sendPostRequest(String url, Strin

我有一个PlayWeb应用程序,可以向服务器发出HTTP请求

请求进行得很顺利:我得到了一个200状态码和Content type=“application/xml”的响应

如果我打印到响应体的stdout,我会看到一个格式良好的Xml文档

但是,如果我尝试从响应创建org.w3c.dom.XML文档 使用WSResponse.asXml(),该方法返回一个空文档

以下是我的代码的相关部分:

private WSResponse sendPostRequest(String url, String body) {

    WSRequest request = WS.url(url);

    request.setHeader("Content-type", "application/x-www-form-urlencoded");

    return request.post(body).get(5000L);
}
以及:


我做错了什么

据我所知,您正在打印一个字符串

System.out.println(response.getBody())

但是,您正在以下位置打印org.w3c.dom.Document:

 System.out.println(xmld);
有关将文档转换为字符串的解决方案,请访问

请尝试以下代码:

Document doc = request().body().asXml();
Source source = new DOMSource(doc);
StringWriter stringWriter = new StringWriter();
StreamResult result = new StreamResult(stringWriter);
TransformerFactory factory = TransformerFactory.newInstance();
javax.xml.transform.Transformer transformer = factory.newTransformer();
transformer.transform(source, result);
String xmlStr = stringWriter.getBuffer().toString();
System.out.println(xmlStr);
或者,如果从SOAP中消费:

Document doc = soapBody.extractContentAsDocument();
Source source = new DOMSource(doc);
StringWriter stringWriter = new StringWriter();
Result result = new StreamResult(stringWriter);
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
transformer.transform(source, result);
strSoapBody = stringWriter.getBuffer().toString();

你能给我们看看你的密码吗?您使用的确切代码。是的,我已经添加了代码。请尝试打印
System.out.println(response.asXml())。如果打印正确,您可能需要创建DocumentFactory对象并使用它来创建文档。
Document doc = soapBody.extractContentAsDocument();
Source source = new DOMSource(doc);
StringWriter stringWriter = new StringWriter();
Result result = new StreamResult(stringWriter);
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
transformer.transform(source, result);
strSoapBody = stringWriter.getBuffer().toString();