发布大数据时Java IOException“来自服务器的文件意外结束”

时间:2013-07-01 13:12:22

标签: java xml exception post webserver

我正在尝试将XML数据发布到处理此XML并返回响应的服务器,有时XML数据可能非常大并且服务器需要一段时间来处理它,在那些情况下我无法获得任何数据响应回来我收到一个IOException,消息“来自服务器的文件意外结束”。我很肯定发送到服务器的XML并没有充满错误,我能做些什么来确保这不会发生或者这是服务器方面的问题?下面是我调用发布数据的方法的代码片段。

感谢。

String encodedData="some XML"    
String urlString="example.com" 
try {
        URL url = new URL(urlString);
        HttpURLConnection urlConnection;
        urlConnection = (HttpURLConnection) url.openConnection();
        urlConnection.setDoOutput(true);
        urlConnection.setDoInput(true);
        urlConnection.setRequestMethod("POST");
        urlConnection.setRequestProperty("Content-Type", contentType);
        urlConnection.setRequestProperty("Content-Length", encodedData.length()+"");
            OutputStream os = urlConnection.getOutputStream();
            os.write(encodedData.getBytes());

        BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), "UTF-8"));
        StringBuffer sb = new StringBuffer();
        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            sb.append(inputLine);
        }
        in.close();
    } catch (MalformedURLException e) {
        logger.debug("MalformedURLException " + e.getMessage());
        logger.debug((new StringBuilder()).append("urlString=").append(urlString).toString());
        throw (e);
    } catch (IOException e) {
        logger.debug("IOException " + e.getMessage());
        logger.debug((new StringBuilder()).append("urlString=").append(urlString).toString());
        throw (e);
    }
return sb.toString();

1 个答案:

答案 0 :(得分:0)

从客户端可以做的不多,这只是一个服务器端问题,服务器需要很长时间来处理数据,导致服务器连接超时才能发送响应。