top-shop.ru
Uslu airlines Блеск
Способ загрузки документов с веб-сервера в Java-программах (усложненный способ, с базовой аутентификацией).

Закачка по протоколу HTTP с базовой аутентификацией в Java программе. RFC2617.

Здесь показан простейший вариант аутентификации (BASIC). На самом деле объект URL позволяет точно так-же обратиться и к файлам на серверах других протоколов (например FTP, WHOIS и пр.), а не только HTTP.

protocol://host:port/resourcepath

protocol://ipaddr:port/resourcepath

Сначала наследуем класс от Authenticator, с целью переопределить метод getPasswordAuthentication():

package tip_url_download_2;

import java.net.Authenticator;
import java.net.PasswordAuthentication;
/**
 *
 * @author Ivashin Urij 27/01/2010
 */
public class MyAuthenticator extends Authenticator{

    @Override
    public PasswordAuthentication getPasswordAuthentication () {
        if (getRequestingScheme().equalsIgnoreCase("basic")) {
            return new PasswordAuthentication ("user", "password".toCharArray());
        }
        return null;
    }
}

Затем, собственно, включается аутентификация в доступе к документу на сервере (Authentication.setDefault()):


package tip_url_download_2;

import java.net.Authenticator;
import java.net.MalformedURLException;
import java.net.URL;
import java.io.*;


/**
 *
 * @author ivashin-yv
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args){
        // TODO code application logic here
        Authenticator.setDefault(new MyAuthenticator());
        try {
            URL url = new URL("http://www.board74.ru/cgi/1.cgi");

            try {
                LineNumberReader r = new LineNumberReader(new InputStreamReader(url.openStream()));
                String s = r.readLine();
                while (s != null) {
                    System.out.println(s);
                    s = r.readLine();
                }
                r.close();
            } catch (IOException iOException) {
                iOException.printStackTrace();
            }

        } catch (MalformedURLException ex) {
            ex.printStackTrace();
        }

    }

}

Блог администратора/программиста

Содержание