2012-01-19 8 views
3

기본적으로 내 웹 서비스에 URL을 사용하여 연결하는 안드로이드 앱이 필요합니다. "http : // username : [email protected]"기본 인증이라고도합니다. 분명히 사용자 이름과 암호는 액세스를 허용하기 전에 웹 응용 프로그램에서 확인하고 그렇지 않으면 요청을 허용하지 않습니다.안드로이드 - 기본 인증 HTTP 요청

내 문제는 URL에 연결하고 시도하는 데 사용 된 클래스와 메소드의 조합에 관계없이 항상 인증되지 않은 (응답 코드 401)이라고 말하는 모든 방법을 사용한다는 것입니다.

해당 웹 응용 프로그램은 un/pw 만 반환하도록 설계되어 있습니다. 그렇지 않으면 아무것도 반환하지 않으며 웹 응용 프로그램과 un/pw 등은 모두 확인되고 지워집니다.

URL에 요청을 보내고 올바르게 작동시키는 방법이 없습니까?

안드로이드 api8 BTW

UPDATE 내 문제는, 안드로이드/아파치 HTTP 라이브러리에서 직접 지원하지 않는 웹 응용 프로그램 사용 NTLM 윈도우 인증에 기인 여기

+0

가 정확히 시도 무엇 necassary 물건을 설명? 웹은 대부분 기본 또는 다이제스트 인증을 사용하고 있습니다. 당신이해야하는 일은 적절한 헤더를 작성하여 요청에 추가하기 만하면됩니다. HttpClient에는 API가 있습니다. –

+0

HTTPClient 등의 요청에 헤더 또는 인증 정보를 추가하는 다양한 구현 –

+0

아래에 게시 된 내용과 마찬가지로 HTTPS는 실제 세부 정보가 없으면 아무 것도 의미하지 않습니다. 더 큰 질문은 : 귀하의 서버가 기본 인증을 사용하고 있습니까? 다이제스트 인증 또는 일부 사용자 정의 구성표 일 수 있습니다. 유선 덤프, 서버 로그 등을 얻으십시오. –

답변

8

지금은 적절한 해결 방법을 조사하고 밝혀 일부 코드는 실제로 오래된 프로젝트입니다. 일부 웹 서비스에 기본 인증을 사용했으며, 당시에는 제대로 작동했습니다. 그 이후로 업데이트 된 API가 있는지는 잘 모르겠지만 (Android 1.6), 여전히 작동해야합니다.

 HttpGet request = new HttpGet(); 
     request.setURI(new URI(url)); 

      UsernamePasswordCredentials credentials = 
       new UsernamePasswordCredentials(authUser, authPass); 
      BasicScheme scheme = new BasicScheme(); 
      Header authorizationHeader = scheme.authenticate(credentials, request); 
      request.addHeader(authorizationHeader); 

기본적으로 기본 HTTP 인증은 사용자와 암호의 간단한 해시입니다. 브라우저에서는 URL에이 값을 채울 수 있지만 실제로 요청에 기본 인증 헤더를 추가하는 작업을 수행합니다. 여기 NTLM 인증에 대한 해결책이 페이지를보고되는 모든

+0

두 개의 첫 번째 줄을 최신 api 버전에 하나로 결합합니다. HttpGet request = new HttpGet (url); 불행히도 내 문제가 해결되지 않았으므로 실제 웹 응용 프로그램 측면에서 문제가 있다고 생각하기 시작했습니다. –