【问题标题】:Java: send a file (XML) from webserver to another serverJava:将文件(XML)从网络服务器发送到另一台服务器
【发布时间】:2011-06-20 15:30:39
【问题描述】:

我有一个关于使用 Java(struts2 框架)将文件(XML 文件)从我的 webapp 服务器发送到另一台服务器的简单问题

希望有人可以看看我的代码,因为我无法检查代码是否可以工作 - 另一台服务器(具有接收文件)仍未实现。而且我必须准备我的 webapp 服务器以最正确的方式发送文件。

我有一个 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();
    }

}

因此,如果有人可以查看我的代码并告诉我您是否认为它不起作用,我将非常感激。如果您认为还有其他更好的方法可以做到这一点,我也将不胜感激。

谢谢大家,你们总是非常乐于助人;)

问候,

阿莱克斯

【问题讨论】:

  • 'byte [] bytearray = new byte [(int)file.length()];'是个坏主意。文件可能大于 Integer.MAX_VALUE;
  • 感谢您的推荐,现在我正在尝试通过Apache HttpClient4库实现发送槽。问候

标签: java sockets client-server outputstream fileinputstream


【解决方案1】:

我建议您使用 HTTP 而不是原始套接字。它将处理超时、分块、编码等。

看看commons http library(以前称为http-client),它会省去你编写自己的代码。

【讨论】:

  • 谢谢@artbristol,我去看看http-client。我知道这是我发送 XML 文件的最佳方式。问候:)
  • 哦,首先我虽然你在谈论 commons-httpclient3 库,但我刚刚意识到它已经过时了。我知道如果我使用 Apache HttpClient4 库会更好,对吗?
  • 嘿,artbristol,最后一个问题,如果在发送 XML 文件后,我想等待并从我发送 XML 的同一服务器获得答案(只有文本和结果),你如何建议我实施吗?再次,非常感谢您的帮助;)
  • 您可以将响应正文中的任何内容返回给 POST/PUT 请求(我将使用它来发送文件)。或者,返回指向结果 URL 的 Location 标头。
【解决方案2】:

我已经了解了如何使用 Apache HttpClient4 和 HttpCore4 库通过 HTTP 来完成它,并且我已经编写了这段代码,你认为它会正常工作吗?非常感谢!

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

【讨论】:

    猜你喜欢
    • 2019-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    • 1970-01-01
    • 2016-10-18
    • 2021-10-22
    • 2018-02-05
    相关资源
    最近更新 更多