在java中传递XML请求时出现的问题
我需要向web服务发送一个xml请求,并接受来自该web服务的xml响应 下面是代码:在java中传递XML请求时出现的问题,java,xml,http,Java,Xml,Http,我需要向web服务发送一个xml请求,并接受来自该web服务的xml响应 下面是代码: public static void main(String[] args) throws IOException { String url ="http://XX.XXX.X.XX:80/test"; String urlParameters = ""; StringBuilder test = new StringBuilder(768);
public static void main(String[] args) throws IOException {
String url ="http://XX.XXX.X.XX:80/test";
String urlParameters = "";
StringBuilder test = new StringBuilder(768);
test.append("<?xml version='1.0'?>\n"+
"<!DOCTYPE COMMAND PUBLIC '-//Ocam//DTD XML Command 1.0//EN' 'xml/command.dtd'>\n"+
"<COMMAND>\n"+
"<TYPE>EXUSRBALREQ</TYPE>\n"+
"<DATE>14-03-17</DATE>\n"+
"<EXTNWCODE>MD</EXTNWCODE>\n"+
"<MSISDN>57625960</MSISDN>\n"+
"<PIN>47565</PIN>\n"+
"<LOGINID></LOGINID>\n"+
"<PASSWORD></PASSWORD>\n"+
"<EXTCODE>AD10001</EXTCODE>\n"+
"<EXTREFNUM>12345</EXTREFNUM>\n"+
"</COMMAND>\n");
System.out.println(test);
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content_Type", "application/xml");
con.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.writeBytes(urlParameters);
wr.flush();
wr.close();
int responseCode = con.getResponseCode();
System.out.println("Sending post on the URL"+url);
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream(),"UTF-8"));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(responseCode);
System.out.println(response);
}
Sending post on the URLhttp://XXX.XXX.X.XX:80/test
200
mclass^2&pid^61:6002:Your request is invalid. Please call 8900
有人能帮我吗
问候,
阿米特·古普塔(Amit Gupta)您的代码将XML组装起来,发送到名为
test
的StringBuilder
中
但是,您从未实际发送测试的内容,因此服务器不接收XML也就不足为奇了。请把它修好
有关如何用Java发送POST请求的示例,请参见。您应该询问Web服务提供商。看起来您的请求通过了,但它是不正确的。感谢Neplatny的回复,我确实与提供商进行了检查,但是他们提到xml请求没有到达,因此他们正在发送该响应,是否有任何方法可以跟踪正在发送的消息,目前我正在windows机器上执行此测试。您的代码中有一个输入错误:HTTP头是“内容类型”,而不是“内容类型”。这可能就是问题所在。这没有任何意义:“请求没有到达,因此他们正在发送响应”。当他们没有收到请求时,如何发送响应?无论如何,你可以使用wireshark检查发生了什么。嗨,Neplanty,我的意思是他们没有以正确的格式接收请求,我需要跟踪请求,以便我可以确保正确的格式。我纠正了@sleske提到的内容类型,我得到的响应不是预期的响应,在经历@Neplatny提到的wireshark之后,看起来请求没有被传递,需要添加,然后重新添加wr.write(test.getBytes()),将请求从Stringbuilder更改为String,并且在wireshark中签入时,请求正在传递。