Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Работа с сетью > Чтение страницы.


Автор: Likurgius 28.10.2006, 22:25
Здраствуйте. Написал код программы, для чтения содержимого страницы, но вот проблема, с одних страниц читает(например: http://www.starwave.com/people/noughton), с других нет(вроде как со всех остальных smile ).
вот код: 
Код

import java.io.*;
import java.net.*;
import javax.swing.*;
import java.awt.event.*;

public class AlbumChecker {
    public static void main(String args[]) throws Exception {
        FileOutputStream fw = new FileOutputStream("C:/webpage.txt");
        AlbumChecker obj = new AlbumChecker();

        obj.downloadPage("http://www.starwave.com/people/noughton", fw);
        fw.close();
    }

    public void downloadPage(String Url, OutputStream out) throws Exception {
        URL url = new URL(Url);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn .setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322)");
        conn.setRequestMethod("GET");
        int len = conn.getContentLength();
        if (len > 0) {
            InputStream input = conn.getInputStream();
            int read;
            byte[] buffer = new byte[16384];
            while ((read = input.read(buffer)) != -1)
                out.write(buffer, 0, read);
            input.close();
            out.flush();
        } else {
            System.out.println("No content");
        }
    }
}


Буду благодарен за помощь. LSD надеюсь на тебя, ибо предложенный код для чтения программы написан тобой smile

Автор: LSD 28.10.2006, 22:36
А с каких страниц он не грузит? И что при этом пишет?

Автор: Likurgius 28.10.2006, 22:44
Со всех smile     допустим: www.javaportal.ru, java.sun.com и т.д

getContentLength() возвращает -1.

Автор: LSD 28.10.2006, 23:23
ContentLength равный -1 всего лишь означает, что длинна неизвестна, а не то что там пусто.
Код
import java.io.*;
import java.net.*;

public class AlbumChecker
{
  public static void main(String args[]) throws Exception
  {
    FileOutputStream fw = new FileOutputStream("C:/webpage.txt");
    AlbumChecker obj = new AlbumChecker();

    obj.downloadPage("http://google.com/", fw);
    fw.close();
  }

  public void downloadPage(String Url, OutputStream out) throws Exception
  {
    URL url = new URL(Url);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322)");
    conn.setRequestMethod("GET");
    int response = conn.getResponseCode();
    if(response == HttpURLConnection.HTTP_OK)
    {
      InputStream input = conn.getInputStream();
      System.out.println("conn.getContentLength() = " + conn.getContentLength());
      int read;
      byte[] buffer = new byte[16 * 1024];
      while((read = input.read(buffer)) != -1)
        out.write(buffer, 0, read);
      input.close();
      out.flush();
    }
    else
    {
      System.err.println("ResponseCode = " + conn.getResponseCode() + " ResponseMessage = " + conn.getResponseMessage());
    }
  }
}

Автор: Likurgius 29.10.2006, 13:18
Ясн. Спасибо smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)