0

WebアプリケーションサーバーからJava(struts2フレームワーク)を使用する別のサーバーにファイル(XMLファイル)を送信することについて簡単な質問があります。

コードが機能するかどうかを確認することは不可能なので、誰かが私のコードを見てくれることを願っています-他のサーバー(ファイルを受信する必要があるサーバー)はまだ実装されていません。そして、ファイルを送信するために可能な限り正確なWebアプリケーションサーバーを準備する必要があります。

XMLファイルパスと、Springフレームワークによって埋められたサーバーアドレスとポートがあります。

インターネットのいくつかの例とこの素晴らしいサイトの他のいくつかの質問を見て、私は自分のファイルを指定されたアドレスに送信するための簡単なコードを書こうとしました。これはコードです:

private String server;
private Integer port;

// getters and settlers methods for server and port properties

public void sendXML(String fileName) throws Exception{
    try{
        Socket socket = new Socket(server, port);

        File file = new File(fileName);

        FileInputStream fis = new FileInputStream(file);

        OutputStream os = socket.getOutputStream();

        byte [] bytearray  = new byte [(int)file.length()];
        BufferedInputStream bis = new BufferedInputStream(fis);
        bis.read(bytearray,0,bytearray.length);
        os.write(bytearray,0,bytearray.length);
        os.flush();
        socket.close();

    }
    catch(IOException e){
        e.printStackTrace();
    }

}

ですから、誰かが私のコードを見て、うまくいかないと思うかどうか教えていただければ、とてもありがたいです。あなたがそれをする別のより良い方法があると思うなら、私もそれを知っていただければ幸いです。

人々に感謝します、あなたはいつも本当に本当に役に立ちます;)

よろしく、

Aleix

4

2 に答える 2

3

rawソケットではなくHTTPを使用することをお勧めします。タイムアウト、チャンク、エンコーディングなどを処理します。

commons httpライブラリ(以前はhttp-clientと呼ばれていました)を見てください。独自のコードを作成する手間が省けます。

于 2011-06-20T15:54:24.323 に答える
0

I have look how to do it trough HTTP with the Apache HttpClient4 and HttpCore4 libraries and I have wrote this code, you think it would work properly? Thank you very much!

private String server;
//private Integer port;

// getter and settler methods for server property

public void sendXML(String fileName) throws Exception{
    try{
        File file = new File(fileName);
        FileEntity entity = new FileEntity(file, "text/xml; charset=\"UTF-8\"");
        DefaultHttpClient httpclient = new DefaultHttpClient();
        HttpPost method = new HttpPost(server);
        method.setEntity(entity);
        HttpResponse response = httpclient.execute(method);
    }
    catch(IOException e){
        e.printStackTrace();
    }
}
于 2011-06-21T00:56:40.427 に答える