繁体   English   中英

如何在Java中使用telnet通过HTTP请求发送xml

[英]how to send xml over HTTP Request using telnet in java

我正在尝试通过Java中的telnet发送HTML POST请求,我必须发送一些XML内容。 但是,当我尝试在Java中实现时,出现“连接重置”错误。 但是,当我通过putty(unix)执行此操作时,我得到的响应xml也正确。

我使用的Java程序:(导致连接重置错误)

public class Telnet {public static void main(String[] args) throws Exception {

       Socket socket = new Socket("hostname", 10020);
       String xmled = "<?xml version=1.0?><methodCall><methodName>GetVoucherDetails</methodName><params><param><value><struct><member><name>serialNumber</name><value><string>1038291567</string></value></member><member><name>networkOperatorId</name><value><string>vno2</string></value></member></struct></value></param></params></methodCall>"; 
       System.out.println("Params: " + xmled);

        try {
            Writer out = new OutputStreamWriter(socket.getOutputStream(), "UTF-8");
            out.write("POST /someContext HTTP/1.1\r\n");
            out.write("Accept: text/xml\r\n"); 
            out.write("Connection: close\r\n"); 
            out.write("Content-Length: 489\r\n"); 
            out.write("Content-Type: text/xml\r\n"); 
            out.write("Host: ws2258:10010\r\n"); 
            out.write("User-Agent: ADM/2.4/6.2\r\n"); 
            out.write("Authorization: Basic cHBtc3VzZXI6dnNfJF9wcG11NWVy\r\n");
            out.write(xmled);  
            out.write("\r\n");  
            out.flush();

            InputStream inputstream = socket.getInputStream();
            InputStreamReader inputstreamreader = new InputStreamReader(inputstream);
            BufferedReader bufferedreader = new BufferedReader(inputstreamreader);

            String string = null;
            string = bufferedreader.readLine();
            System.out.println(string);
            while ((string = bufferedreader.readLine()) != null) {
               System.out.println("Received " + string);
            }

       } catch(Exception e) {
           e.printStackTrace();
       } finally {
         socket.close(); 
       }
 }

}

请给我一些建议,我是套接字编程的新手。

在您的Socket构造函数中,您是要放入端口10020吗? 除非您的Web服务器正在侦听端口10020,否则HTTP表示端口80。

我终于找到了解决这个问题的方法。 最后,修复很简单。 我们必须在一行中发送整个XML内容,而不是分成多行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM