2014-11-15 4 views
1

Извините, если это дубликат. Я пытаюсь загрузить txt-файл с моего веб-сервера apache. Он имеет довольно базовую аутентификацию, определенную через .htaccess, так что я могу войти в систему с помощью простого http://username:[email protected]/dir/file.txt в моем браузере. Однако этот метод возвращает исходный код моей страницы 403 в HttpClient. Как я могу войти в систему с этим типом аутентификации? Кроме того, я бы хотел, чтобы я мог сделать что-то более безопасное, чем это, если бы мог. Благодарю.Антенна HttpClient .htaccess аутентификация

Edit: Текущий код ниже

URI url = new URI("http://username:[email protected]/dir/file.txt"); 
HttpClient client = new DefaultHttpClient(); 
HttpGet request = new HttpGet(url); 
HttpResponse response = client.execute(request); 

String html = ""; 
InputStream in = response.getEntity().getContent(); 
BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 
StringBuilder str = new StringBuilder(); 
String line = null; 
while((line = reader.readLine()) != null) 
{ 
    str.append(line); 
} 
in.close(); 
html = str.toString(); 

ответ

0

Пример кода, который вы, возможно, должны были бы приспособиться к вашим потребностям:

HttpClient httpclient = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost(url); 
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

StringBuilder authentication = new StringBuilder().append("username").append(":").append("password"); 
String result = Base64.encodeBytes(authentication.toString().getBytes()); 

httppost.setHeader("Authorization", "Basic " + result); 
HttpResponse response = httpclient.execute(httppost); 
HttpEntity entity = response.getEntity(); 
is = entity.getContent(); 
+0

Это дает мне следующее сообщение об ошибке: «Метод encodeBytes (байт [ ]) не определено для типа Base64 «Также, что такое переменные nameValuePairs и« is »? – quadrplax

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