Java:从web服务器发送文件(XML)到另一台服务器
我有一个简单的问题关于从我的webapp服务器发送文件(XML文件)到另一台服务器与Java(struts2框架)。Java:从web服务器发送文件(XML)到另一台服务器
我希望有人可以给看看我的代码,因为这是不可能的,我来检查代码将工作 - 其他服务器(一个具有接收文件)仍然没有实现。而且我必须准备好我的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();
}
}
所以,我会很感激,如果有人可以给看看我的代码,并告诉我,如果你认为它不会工作。如果你认为还有另一种更好的办法,我也会很感激它。
谢谢你的人,你总是真真正有用的;)
问候,
Aleix
我建议你使用HTTP,而不是原始套接字。它将处理超时,组块,编码等。
看看commons http library(以前称为http-client),它会为您节省编写自己的代码。
谢谢@artbristol,我会看看http-client。我知道这是我发送XML文件的最佳方式。问候:) – Aleix
哦,首先我虽然在谈论commons-httpclient3库,但我刚刚意识到这已经过时了。我明白,如果我使用Apache HttpClient4库,那么更好? – Aleix
是的,v4是一个尝试 – artbristol
我看看如何通过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();
}
}
'byte [] bytearray = new byte [(int)file.length()];''是一个坏主意。文件可能大于Integer.MAX_VALUE; –
感谢您的建议,现在我正在尝试实施发送槽Apache HttpClient4库。 Regards – Aleix