반응형
Android에서 HTTP 인증을 수행하는 방법은 무엇입니까?
org.apache.http.auth 클래스를 확인하고 있습니다. 누군가가 있다면 더 많은 참조 또는 예가 있습니까?
이전에 특정 패키지를 만난 적이 없지만 클라이언트 측 HTTP 인증을위한 것이라고 말합니다. Android에서 java.net
API를 사용하여 다음 과 같이 할 수있었습니다 .
Authenticator.setDefault(new Authenticator(){
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("myuser","mypass".toCharArray());
}});
HttpURLConnection c = (HttpURLConnection) new URL(url).openConnection();
c.setUseCaches(false);
c.connect();
분명히 getPasswordAuthentication ()은 상수를 반환하는 것보다 더 지능적인 작업을 수행해야합니다.
POST
인증을 사용하여 본문 (예 :) 을 사용하여 요청하려는 경우 Android 문제 4326에 주의하십시오 . 플랫폼에 제안 된 수정 사항을 링크했지만 기본 인증 만 원하는 경우 간단한 해결 방법이 있습니다. 인증 자에 신경 쓰지 말고 대신 다음을 수행하십시오.
c.setRequestProperty("Authorization", "basic " +
Base64.encode("myuser:mypass".getBytes(), Base64.NO_WRAP));
저에게는 효과가있었습니다.
final String basicAuth = "Basic " + Base64.encodeToString("user:password".getBytes(), Base64.NO_WRAP);
Apache HttpCLient :
request.setHeader("Authorization", basicAuth);
HttpUrlConnection :
connection.setRequestProperty ("Authorization", basicAuth);
http 헤더를 수동으로 삽입하여 요청할 수 있습니다.
HttpGet request = new HttpGet(...);
request.setHeader("Authorization", "Basic "+Base64.encodeBytes("login:password".getBytes()));
수동 메서드는 import android.util.Base64와 잘 작동하지만 encode 호출시 Base64.NO_WRAP를 설정해야합니다.
String basicAuth = "Basic " + new String(Base64.encode("user:pass".getBytes(),Base64.NO_WRAP ));
connection.setRequestProperty ("Authorization", basicAuth);
내 Android 프로젝트의 경우 여기에서 Base64 라이브러리를 사용했습니다.
매우 방대한 라이브러리이고 지금까지 아무런 문제가 없었습니다.
이것은 나를 위해 작동합니다
URL imageUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection) imageUrl
.openConnection();
conn.setRequestProperty("Authorization", "basic " +
Base64.encode("username:password".getBytes()));
conn.setConnectTimeout(30000);
conn.setReadTimeout(30000);
conn.setInstanceFollowRedirects(true);
InputStream is = conn.getInputStream();
참고 URL : https://stackoverflow.com/questions/1968416/how-to-do-http-authentication-in-android
반응형
'development' 카테고리의 다른 글
데이터베이스에서 각각의 테이블 및 필드 목록 가져 오기 (0) | 2020.10.25 |
---|---|
화이트 햇 프로그래머를위한 블랙 햇 지식 (0) | 2020.10.25 |
템플릿 파일 변경시 Flask 앱 다시로드 (0) | 2020.10.25 |
$ exceptionHandler 구현을 재정의하는 방법 (0) | 2020.10.25 |
.NET에서 오류 및 경고 메시지 상자를 표시하는 방법 / MessageBox를 사용자 지정하는 방법 (0) | 2020.10.25 |