一个下载网页的程序,代码如下:
public class DownLoad {

private URL url=null;
public String getPage(String urlStr){
StringBuffer sb = new StringBuffer();
String line=null;
BufferedReader buffer = null;

try {
url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
buffer = new BufferedReader(new InputStreamReader(conn.getInputStream())); //buffer返回正常
line = buffer.readLine(); //此处一直返回null while((line = buffer.readLine()) != null )
{
//System.out.println(line);
sb.append(line+"\n");
}
conn.disconnect();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
sb.append("can't apporach to the website!");
}
return sb.toString();
}
}Debug 问题出在此处,readLine调到此处:
public long skip(long n) throws IOException {
if (n < 0L) {
    throw new IllegalArgumentException("skip value is negative");
}
synchronized (lock) {
    ensureOpen();
    long r = n;
    while (r > 0) {
if (nextChar >= nChars)
    fill();
if (nextChar >= nChars) /* EOF */
    break; //从这里退出了。难道问题是因为读的该行数据超过可以读的内容???

if (skipLF) {
    skipLF = false;
    if (cb[nextChar] == '\n') {
nextChar++;
    }
}
               .............希望哪位大侠指点一二,在线等。谢谢!

解决方案 »

  1. BufferedReader reader = new BufferedReader( new InputStreamReader(conn.getInputStream(), "utf-8") );
    String line = null;
    while ((line = reader.readLine()) != null) {
    sb.append(line);
    }在while之前不要运行reader.readLine(),修改为如上试试?
    你加一个编码的参数试试?
      

  2. 不行啊,之前怀疑是readLine()字符过多,于是用read()方法也不行。
    始终读不出数据,返回结果无论是readLine()还是read()都一直为空。
      

类似问题 »