我正在尝试模拟 WS。我在 WS 中创建了以下方法
@POST
@Consumes (MediaType.APPLICATION_XML)
public void dataIn (InputStream inXml){
System.out.println ("data received");
BufferedReader br = new BufferedReader(new InputStreamReader(inXml));
String xml = null;
try {
while ((xml = br.readLine())!=null){
System.out.println(xml);
}
} catch (IOException e) {
System.out.println ("ouch");
}
}
我正在通过此代码使用我的 Java 客户端发送 XML
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><rootElem name=\"xml_type\"><info>this_is_test</info></rootElem>";
service.accept(MediaType.APPLICATION_XML).post(xml);
但我得到了这个例外
Exception in thread "main" com.sun.jersey.api.client.UniformInterfaceException: POST http://localhost:8080/project/ws/services/1.0/savedata returned a response status of 415
我很确定我没有正确发送我的 XML。在做了几个谷歌搜索之后,我无法弄清楚我在做什么错。由于我在网上找到的大多数教程/帮助都是使用 OBJ > JAXB > XML > JAXB > OBJ 从客户端到服务器的翻译。我想发送原始 xml 并读取原始 xml。有人可以建议我在这里做错了什么吗?
我不确定回答自己的问题是否会导致 -ve 声誉。但是在偶然发现并弄清楚事情之后,我使用 Apache httpclient 发送请求并且它工作正常。我会要求结束这个问题。
DefaultHttpClient dhc = new DefaultHttpClient();
HttpPost postRequest = new HttpPost("http://localhost:8080/project/ws/services/1.0/savedata");
StringEntity se = new StringEntity("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><rootElem name=\"xml_type\"><info>this_is_test</info></rootElem>");
se.setContentType("application/xml");
postRequest.setEntity(se);
HttpResponse response = dhc.execute(postRequest);
System.out.println (response.getStatusLine().getStatusCode());