2011-07-25 2 views
0

Я пытался подключиться к какой-то хозяин, как этотПроблема чтения файла из URL - разрешения отказано

   url = new URL(urlString); 
       BufferedReader in = new BufferedReader(
           new InputStreamReader(
           url.openStream())); 

, но я всегда получаю MalformedException - доступ запрещен, мне нужно ввести имя пользователя и пароль (который я знаю), но Я не знаю, как нет конструктора в URL-адресе с теми параметрами, которые не являются методами setusername/password. Где указать имя пользователя и пароль?

+0

Что такое метод аутентификации? Проверка подлинности HTTP или приложения? – Dor

ответ

1

Я сделал это в предыдущем проекте. Чтобы получить доступ к защищенному ресурсу, вам необходимо использовать класс Authenticator.

Имя пользователя и пароль входят в переменные, определенные для них ближе к концу, но им не нужно жестко закодировать, вы можете их экстернализировать с использованием свойств java.

Вот старый фрагмент

// Install the custom authenticator 
Authenticator.setDefault(new MyAuthenticator()); 

// Access the page 
try { 
    // Create a URL for the desired page 
    URL url = new URL("THE URL YOU NEED TO OPEN/ACCESS"); 

    // Read all the text returned by the server 
    BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); 
    String str; 
    while ((str = in.readLine()) != null) { 
     // str is one line of text; readLine() strips the newline character(s) 
    } 
    in.close(); 
} catch (MalformedURLException e) { 
} catch (IOException e) { 
} 

public class MyAuthenticator extends Authenticator { 
    // This method is called when a password-protected URL is accessed 
    protected PasswordAuthentication getPasswordAuthentication() { 
     // Get information about the request 
     String promptString = getRequestingPrompt(); 
     String hostname = getRequestingHost(); 
     InetAddress ipaddr = getRequestingSite(); 
     int port = getRequestingPort(); 

     // Get the username from the user... 
     String username = "myusername"; 

     // Get the password from the user... 
     String password = "mypassword"; 

     // Return the information 
     return new PasswordAuthentication(username, password.toCharArray()); 
    } 
} 
+0

Какой пакет является классом аутентификатора членом? Где его найти? –

+0

@ TšelisoMolukanele это 'java.net.Authenticator' см. Http://docs.oracle.com/javase/7/docs/api/java/net/Authenticator.html – gotomanners

1

Я никогда не имеет такой проблемы, но .... попытаться взглянуть на это:

класс urllib2.HTTPPasswordMgr Ведите базу данных (Realm, Ури) -> (пользователь, пароль) отображений.

может быть, это может помочь документацию urllib2 по этой ссылке:

http://docs.python.org/library/urllib2.html

надеюсь, что это будет полезно

+0

извините. Я отправил бесполезный комментарий. Я столкнулся с проблемой подключения к python ... Я хотел удалить сообщение, но я не нашел ссылку. просто не учитывайте то, что я написал. – Stefano

1

Если это проверка подлинности HTTP, используйте URL вида http://user:[email protected]:80/path.
Если это аутентификация приложения, отправьте запрос POST/GET HTTP с подробной информацией.

Смежные вопросы