Java 写入服务器时出错
我正在使用Java程序“POST”方法将文件从一台服务器上载到另一台服务器。但我正在变得异常Java 写入服务器时出错,java,post,file-upload,ioexception,Java,Post,File Upload,Ioexception,我正在使用Java程序“POST”方法将文件从一台服务器上载到另一台服务器。但我正在变得异常 java.io.IOException: Error writing to server at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:582) at sun.net.www.protocol.http.HttpURLConnection.writeRequests(
java.io.IOException: Error writing to server
at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:582)
at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:594)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1216)
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:379)
at com.test.rest.HttpURLConnectionExample.TransferFile(HttpURLConnectionExample.java:107)
at com.test.rest.HttpURLConnectionExample.main(HttpURLConnectionExample.java:44)
我有其他方法可以通过服务器进行身份验证。将从下面的代码中调用。当我从服务器得到响应时,我得到的是上述异常。要将文件传输到服务器,我在下面编写了一个方法。我的示例代码如下:
public static void TransferFile(){
String urlStr = "http://192.168.0.8:8600/audiofile?path=1/622080256/virtualhaircut.mp3";
File tempFile = new File("/home/MyPath/Workspace/Sample/virtualhaircut.mp3");
BufferedWriter br=null;
HttpURLConnection conn = null;
URL url;
try {
url = new URL(urlStr);
AuthenticationUser();
conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", new MimetypesFileTypeMap().getContentType(tempFile.getName()));
} catch (MalformedURLException e1) {
System.out.println("Malformed");
e1.printStackTrace();
} catch (ProtocolException e) {
System.out.println("Protocol");
e.printStackTrace();
} catch (IOException e) {
System.out.println("IO");
e.printStackTrace();
}
System.out.println("line 69");
FileInputStream fis;
OutputStream fos;
try {
System.out.println("line 75");
System.out.println("line 77");
fis = new FileInputStream(tempFile);
fos = conn.getOutputStream();
byte[] buf = new byte[1024 * 2];
int len = 0;
System.out.println("line 80");
while ((len = fis.read(buf)) > 0) {
fos.write(buf, 0, len);
System.out.println("line 85");
}
System.out.println("line 87");
buf = null;
fos.flush();
fos.close();
fis.close();
}catch (FileNotFoundException e) {
System.out.println("");
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
if (conn.getResponseCode() == 200) {
System.out.println("here");
}
} catch (IOException e) {
e.printStackTrace();
}
}
发生错误的原因可能是接收服务器关闭了连接,也可能是因为您的文件超出了大小限制。你用小文件测试过吗?谢谢回复!!!对它正在上传小文件。但对于较大的文件大小,它给出了上述例外情况。重要的是,它在我的linux终端上使用curl命令。。。我不知道如何用我的java程序解决这个问题。这不是java程序的问题。这是服务器端的配置问题。顺便说一句,如果真的是这样,你介意接受这个答案吗?那么,对于这个,我必须做什么?服务器的配置文件中是否有任何属性?我必须在服务器上设置,我不是Http连接方面的专家,但您必须查看curl是否通过相同的POST方法发送,是否以相同的方式接收。我在网上为你找到了这个:希望对你有所帮助。你介意投票回答吗?感谢在我的情况下,在我设置了
connectionTimeout=“90000”max燕子大小=“-1”maxPostSize=“-1”
并多次发布之后,其中一个会成功。我不知道为什么。