【问题标题】:Error writing to server写入服务器时出错
【发布时间】:2015-11-02 11:28:00
【问题描述】:

我正在使用 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(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();
        }


    }

【问题讨论】:

  • 就我而言,在我设置connectionTimeout="90000" maxSwallowSize="-1" maxPostSize="-1"并多次发布后,其中一个会成功。我不知道为什么。

标签: java post file-upload ioexception


【解决方案1】:

错误可能是因为接收服务器关闭了连接,可能是因为您的文件超出了大小限制。你测试过小文件吗?

【讨论】:

  • 感谢回复!!!是的!!!它正在上传小文件。但是对于较大的文件大小,它给出了上述例外。一件重要的事情是,它正在我的 linux 终端上使用 curl 命令......我不知道如何使用我的 java 程序解决这个问题
  • 不是java程序的问题。这是服务器端的配置问题。 BTW,如果真的是这样,你介意接受答案吗?
  • 那么,为此,我该怎么办?服务器的配置文件中是否有任何属性?我必须在服务器上设置
  • 我不是 Http 连接方面的专家,但是您必须查看 curl 是否通过相同的 POST 方法发送并以相同的方式接收。我在网上为你找到了这个:stackoverflow.com/questions/2947683/…
  • 希望对您有所帮助。你介意点赞答案吗?谢谢
猜你喜欢
  • 2014-11-20
  • 1970-01-01
  • 2012-06-09
  • 2017-08-15
  • 2016-09-01
  • 2021-12-30
  • 2016-10-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多