【问题标题】:Reading InputStream of NANOHTTPD gives Socket TimeOut Exception读取 NANOHTTPD 的 InputStream 会产生 Socket TimeOut 异常
【发布时间】:2014-09-15 21:01:45
【问题描述】:

我正在尝试使用以下代码从 IHTTPSession.getInputStream() 读取 InputStream,但它每次都会给出 Socket TimeOut 异常。

private String readInStream(InputStream in){

        StringBuffer outBuffer=new StringBuffer();
        BufferedInputStream bis=new BufferedInputStream(in);
        try {
            while(bis.available()>0){
                int ch= bis.read();
                outBuffer.append((char)ch);
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        Log.e("DATA_Length", "outputBuffer :"+outBuffer.toString().length());
        return outBuffer.toString();
    }

我也尝试了以下方法,但出现了同样的异常

private String readInStream(InputStream in){
        String line="";
        StringBuffer outBuffer=new StringBuffer();

        BufferedReader rd=new BufferedReader(new InputStreamReader(in));

        try {
            while((line=rd.readLine()) != null){
                outBuffer.append(line);
            }
        } catch (IOException e) {
            Log.e("IOException", "IOException in readInStream:");
            e.printStackTrace();
        }

        Log.e("DATA_Length", "outputBuffer :"+outBuffer.toString().length());
        return outBuffer.toString();
    }

【问题讨论】:

    标签: inputstream bufferedreader bufferedinputstream nanohttpd


    【解决方案1】:

    从标题中获取内容长度并读取它解决了这个问题。

    【讨论】:

      【解决方案2】:

      可以确认接受的答案有效(从标题中获取内容长度并阅读它)。下面是一些将InputStream 转换为String 的示例代码:

      try {
          int contentLength = Integer.valueOf(session.getHeaders().get("content-length"));
          String msg = new String(in.readNBytes(contentLength)); // the request body
      } catch (IOException e) {
          e.printStackTrace();
      }
      

      如果你想在此处阻止NullPointerException,请在将其解析为整数之前检查 content-length 标头是否确实存在。

      【讨论】:

        猜你喜欢
        • 2017-07-15
        • 2015-05-23
        • 1970-01-01
        • 2016-07-25
        • 2015-07-11
        • 1970-01-01
        • 2011-10-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多