Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Скачивание страницы с web-servera


Автор: WandM 9.12.2006, 18:57
Как скачать страницу с сервера?
Проблема в том, что страница предоставляется по запросу вида: http://server.com/index.php?giveIt
При попытке открытия сокета 
Код
Socket s = new Socket("http://server.com/index.php?giveIt",80);
 программа валится с exception'ом: Неизвестное имя хоста.

Автор: kkorsakoff 9.12.2006, 19:11
Сокет - это соединение с компьютером. Следовательно ему надо передавать имя хоста и порт. Точнее либо IP-адрес либо ДНС-имя. А то, что ты хочешь передать - это урл.
Либо
Код

Socket s=new Socket("server.com",80)

и далее запрашиваешь необходимый ресурс.

Либо обрати внимание на метод URL.openConnection()

UrlConnection conn=new URL("http://server.com/index.php?giveIt").openConnection();

Автор: WandM 24.12.2006, 14:27
Спасиб. Проблема решена.

Автор: v2v 1.6.2007, 18:54
У меня проблемка по теме.
Странички я разобрался как скачивать, а вот теперь возникла проблема - скачать рисунок:
пробую по той же технологии.
Код

        HttpURLConnection httpConnection = (HttpURLConnection) url.openConnection();
        InputStream is = httpConnection.getInputStream();
        String encoding = httpConnection.getContentEncoding();
        if (encoding == null )
            encoding="ASCII";
        Reader reader = new InputStreamReader(is, encoding);

а дальше пытаюсь Reader  переписать посимвольно в JPG файл, и файл получается по размеру как и рисунок на веб сервере, но вот открыть его невозможно , посмотрел внутренности половина бит рисунка не совпадает.... в чем проблема.. хелп. 

спасибо smile 

Автор: Stampede 1.6.2007, 21:26
Reader - это класс для чтения текстовых потоков, а JPG - это двоичный формат. Соответственно, и читать его надо по-двоичному, примерно вот так:

Код

OutputStream os = new FileOutputStream("path-to-file");
HttpURLConnection httpConnection = (HttpURLConnection) url.openConnection();
InputStream is = httpConnection.getInputStream();
for (int b = is.read(); b >= 0; b = is.read()) {
    os.write(b);
}
os.close();


А вообще почитай в книжках, как в Java устроен ввод/вывод - полезно будет.

Автор: v2v 1.6.2007, 21:33
спосибо, буду в понедельник пробывать. 

Зы. Java  - не профильный мой язык программирования, так что мне много чего по нему почитать надо  smile 

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