简体   繁体   English

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

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

I am trying to send an HTML POST request over telnet in Java, I have some XML content which I have to send. 我正在尝试通过Java中的telnet发送HTML POST请求,我必须发送一些XML内容。 But when I try to achieve in java, i am getting "Connection Reset" error. 但是,当我尝试在Java中实现时,出现“连接重置”错误。 But the same when I do it over putty(unix), I am getting the response xml correctly. 但是,当我通过putty(unix)执行此操作时,我得到的响应xml也正确。

Java Program I used : (Resulting in Connection Reset error) 我使用的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(); 
       }
 }

} }

Please suggest me something, I am new to socket programming. 请给我一些建议,我是套接字编程的新手。

In your Socket constructor, did you mean to put port 10020? 在您的Socket构造函数中,您是要放入端口10020吗? HTTP implies port 80 unless your web server is listening on port 10020. 除非您的Web服务器正在侦听端口10020,否则HTTP表示端口80。

I finally have found the solution for this problem. 我终于找到了解决这个问题的方法。 The fix was quiet simple at the end. 最后,修复很简单。 We had to send the entire XML content in one single line rather then putting into multiple lines. 我们必须在一行中发送整个XML内容,而不是分成多行。

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

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