0

Java で telnet 経由で HTML POST リクエストを送信しようとしています。送信する必要がある XML コンテンツがいくつかあります。しかし、Javaで達成しようとすると、「接続リセット」エラーが発生します。しかし、パテ(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(); 
       }
 }

}

私に何か提案してください。私はソケットプログラミングが初めてです。

4

2 に答える 2

0

Socket コンストラクターで、ポート 10020 を配置するつもりでしたか? Web サーバーがポート 10020 でリッスンしていない限り、HTTP はポート 80 を意味します。

于 2012-06-21T05:03:04.513 に答える
0

私はついにこの問題の解決策を見つけました。修正は最後に静かで簡単でした。XML コンテンツ全体を複数行ではなく、1 行で送信する必要がありました。

于 2012-06-27T11:12:35.583 に答える