2012-06-07 3 views
2

Java의 나머지 API를 사용하여 QC 11에 액세스하려고합니다.QC ALM (QC 11) REST API 400 인증 중 오류

HP에서 제공하는 설명서의 API 참조에 준합니다. 다음은 로그인 인증의 기본 단계입니다.

비 웹 응용 프로그램 인증 클라이언트는 것입니다 인증 자원을 조회하고 더 인증 헤더를 보내지 않습니다. 이 단계는 선택 사항입니다.

GET/qcbin/나머지는/서버가 요청을 거부하고 인증 점에 대한 참조를 반환

-인증됩니다.

HTTP/1.1 401 권한 WWW 인증 : LWSSO 영역 = HTTP : // [서버] : [포트] 클라이언트가 인증 시점에 유효한 기본 인증 헤더를 전송

/qcbin/인증 점 .

GET/qcbin/인증 점/인증 인증 : ABCDE123

서버 기본은 기본 인증 헤더의 유효성을 확인 토큰 새로운 LW-SSO를 만들고 LWSSO_COOKIE_KEY로서 돌려줍니다.

HTTP/1.1 200 OK 설정 쿠키 : LWSSO_COOKIE_KEY = {쿠키}

응용 프로그램은 이제 토큰을 사용하여 데이터와 서비스에 액세스 할 수 있습니다. 세션이 끝날 때 로그 오프하여 토큰을 버립니다.

여기 내 자바 코드입니다.

DefaultHttpClient httpClient = new DefaultHttpClient(); 

      String encoding = Base64.encodeBase64String("demoUser:demoUser123".getBytes()); 
      HttpGet httpGet = new HttpGet("http://HOST_VALUE:PORT_VALUE/qcbin/authentication-point/authenticate"); 
      //httpGet.setHeader("GET", "/qcbin/authentication-point/authenticate"); 
      httpGet.setHeader("Authorization:", "Basic " + encoding); 
      HttpResponse response; 



      httpClient.getCredentialsProvider().setCredentials(
        new AuthScope("proxyHost", 8080), 
        new UsernamePasswordCredentials("userName", "Password")); 




      response = httpClient.execute(httpGet); 


      System.out.println(response.getAllHeaders().toString()); 
      System.out.println(response.getStatusLine().toString()); 
      BufferedReader br = new BufferedReader(
        new InputStreamReader((response.getEntity().getContent()))); 

      String output; 
      System.out.println("Output from Server .... \n"); 
      while ((output = br.readLine()) != null) { 
       System.out.println(output); 
      } 
      httpClient.getConnectionManager().shutdown(); 

그것은

로 나에게 출력을 제공 [Lorg.apache.http.Header; @ 159e154 HTTP/ 서버 1.1 400 잘못된 요청 출력 ....

I Java를 사용하여 REST를 처음 사용합니다. 누구든지 도와 줄 수 있습니까? REST를 사용하고 데이터를 가져 오는 ALM에 연결하기위한 예제가 있습니까?

+0

하였다 : ALM 자바 API (http://code.google.com/p/alm-java-api/) – gonella

+0

@gonella 링크가 깨졌습니다. – Dennis

답변

2

문제가 해결되었습니다.

문제는 base64 인코딩에있었습니다! 문자열을 base64로 인코딩 된 문자열로 변환하는 경우 결과가 76 char보다 큰 경우 그것은 새로운 라인을 추가합니다! 더라도 그 미만 76

그래서 용액 자바 API가

encoding = encoding.replaceAll("\n", "");