Java: отправить файл (XML) с веб-сервера на другой сервер - PullRequest
0 голосов
/ 20 июня 2011

У меня простой вопрос о отправке файла (XML-файла) с моего сервера веб-приложений на другой сервер с Java (Framework Struts2) .

Я надеюсь, что кто-то может датьпосмотрите на мой код, потому что я не могу проверить, будет ли работать код - другой сервер (тот, который должен получить файл) все еще не реализован.И я должен подготовить свой сервер веб-приложений как можно более правильным, чтобы отправить файл.

У меня есть путь к файлу 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

Ответы [ 2 ]

3 голосов
/ 20 июня 2011

Я предлагаю вам использовать HTTP, а не сырые сокеты.Он будет иметь дело с таймаутами, разбиением на фрагменты, кодированием и т. Д.

Посмотрите библиотеку commons http (ранее известную как http-клиент), это сэкономит вам написание собственного кода.

0 голосов
/ 21 июня 2011

Я посмотрел, как сделать это через HTTP с библиотеками Apache HttpClient4 и HttpCore4, и я написал этот код, вы думаете, он будет работать правильно? Большое спасибо!

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();
    }
}
...