如何读取http输入流

Dea*_*ely 43 java android

下面粘贴的代码取自HttpURLConnection上的java文档.

我收到以下错误:

readStream(in) 
Run Code Online (Sandbox Code Playgroud)

因为没有这样的方法.

我在URLConnection的类概述中看到了同样的事情 URLConnection.getInputStream()

在哪里readStream?代码段如下:

 URL url = new URL("http://www.android.com/");   
    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();   
    try 
    {     
        InputStream in = new BufferedInputStream(urlConnection.getInputStream());     
        readStream(in);  <-----NO SUCH METHOD
    }
    finally 
    {     
        urlConnection.disconnect();   
    } 
Run Code Online (Sandbox Code Playgroud)

Emr*_*ran 61

试试这段代码:

InputStream in = address.openStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder result = new StringBuilder();
String line;
while((line = reader.readLine()) != null) {
    result.append(line);
}
System.out.println(result.toString());
Run Code Online (Sandbox Code Playgroud)

  • 我建议使用StringBuilder而不是StringBuffer,因为您不需要额外的同步开销. (9认同)
  • 为了效率,`result`也应该是StringBuffer对象. (6认同)
  • `StringBuilder`适用于单线程操作.当多个线程正在读取并将蒸汽写入同一对象时,应该使用`StringBuffer`! (5认同)

ulm*_*ngt 13

看起来文档只是readStream()用来表示:

好的,我们已经向您展示了如何获取InputStream,现在您的代码就进入了 readStream()

因此,您应该编写自己的readStream()方法,该方法首先对数据执行任何操作.


Eug*_*sky 5

Spring有一个util类:

import org.springframework.util.FileCopyUtils;

InputStream is = connection.getInputStream();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
FileCopyUtils.copy(is, bos);
String data = new String(bos.toByteArray());
Run Code Online (Sandbox Code Playgroud)