2012-12-19 3 views
2

내 Rest-Services를 호출 할 때 RESTEasy Proxy Framework을 사용하고 있습니다. 프록시 프레임 워크에서 선점 인증을 사용하고 싶습니다.RESTEasy 클라이언트 프록시 선점 기본 인증

public void callSomeService() throws Exception { 

    RegisterBuiltin.register(ResteasyProviderFactory.getInstance()); 

    DefaultHttpClient client = new DefaultHttpClient(); 
    UsernamePasswordCredentials credentials = new UsernamePasswordCredentials(
      USERNAME, PASSWORD); 
    AuthScope authscope = new AuthScope(AuthScope.ANY_HOST, 
      AuthScope.ANY_PORT, AuthScope.ANY_REALM); 
    client.getCredentialsProvider().setCredentials(authscope, credentials); 
    ApacheHttpClient4Executor executer = new ApacheHttpClient4Executor(client); 
    dummyResource = ProxyFactory.create(DummyResource.class, 
      "http://localhost:8888/myapp/rest/", executer); 

    // Do some calls here  
} 

내 응용 프로그램의 트래픽을 모니터링, 나머지 서비스는 두 번 호출됩니다 :

  1. 먼저 클라이언트가 401 오류 (무단)를 수신
  2. 내 현재 코드 그게 전부

  3. 두 번째 요청에는 인증 헤더가 추가되고 모든 것이 작동합니다. .

실제로 내가 원하는 것은 인증 헤더가 이미 첫 번째 요청에 추가 된 것입니다. 어떻게해야합니까?

RESTEasy 2.3.5를 사용 중입니다! 또한이 때문에 코드의 선제 인증, 실제로 나던 일을 주어진 예이다 문서 (http://docs.jboss.org/resteasy/docs/2.3.5.Final/userguide/html_single/index.html#transport_layer)를 읽어

BasicScheme basicAuth = new BasicScheme(); 
authCache.put("com.bluemonkeydiamond.sippycups", basicAuth); 

답변

0

네 말이 맞아, 설명서의 예제는 컴파일되지 않습니다. "com.bluemonkeydiamond.sippycups"문자열을 HttpHost 인스턴스로 바꿔보십시오. HttpHost 클래스에는 여러 생성자가 있으므로 JavaDocs를 확인하십시오. 가장 간단한 생성자는 문자열을 취합니다. 예 :

BasicScheme basicAuth = new BasicScheme(); 
authCache.put(new HttpHost("com.bluemonkeydiamond.sippycups"), basicAuth);