在java中传递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);

我需要向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);

        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中签入时,请求正在传递。