2015-06-22 139 views
1

我正在使用Java获取测试用例信息。我使用AuthenticateLoginLogoutExample代码作为参考。我能够验证用户身份,但是当我使用GET方法通过REST API检索诸如测试用例信息等简单信息时,我收到了状态码HTTP 401使用Java对HP ALM 12 REST API进行身份验证

+0

Plese显示您的代码 –

回答

0

获取HTTP 401状态码正常。事实上,您可以ping通服务器。此外尝试使用“http get”方法使用“{Host}/qcbin/rest/is-authenticated”来捕获响应。您会在Documentation中的其他连接器类中找到http获取方法。

0

如果您使用AuthenticateLoginLogoutExample作为参考,它应该是确定的。

响应可能的原因您收到:

  1. 用户未分配到你感兴趣的项目;
  2. 您已执行注销操作;
  3. 不理想的cookie管理。 ALM要求会话保持REST互操作。它在请求中使用LWSSO_COOKIE_KEY苦力来实现。它以服务器的响应作为成功会话开幕的结果发送。如果你松了,你将面临这样的答复代码。
0

惠普拥有自己的base64encoder.java类,您需要使用它。你不能使用java中的标准。你必须使用他们的版本。我得到相同的401错误,直到我找到他们的编码器类。

public class Base64Encoder { 
    private final static char[] ALPHABET = 
     "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/".toCharArray(); 

      private static int[] toInt = new int[128]; 

      static { 
       for (int i = 0; i < ALPHABET.length; i++) { 
        toInt[ALPHABET[i]] = i; 
       } 
      } 

      /** 
      * Translates the specified byte array into Base64 string. 
      * 
      * @param buf the byte array (not null) 
      * @return the translated Base64 string (not null) 
      */ 
      public static String encode(byte[] buf) { 
       int size = buf.length; 
       char[] ar = new char[((size + 2)/3) * 4]; 
       int a = 0; 
       int i = 0; 
       while (i < size) { 
        byte b0 = buf[i++]; 
        byte b1 = (i < size) ? buf[i++] : 0; 
        byte b2 = (i < size) ? buf[i++] : 0; 

        int mask = 0x3F; 
        ar[a++] = ALPHABET[(b0 >> 2) & mask]; 
        ar[a++] = ALPHABET[((b0 << 4) | ((b1 & 0xFF) >> 4)) & mask]; 
        ar[a++] = ALPHABET[((b1 << 2) | ((b2 & 0xFF) >> 6)) & mask]; 
        ar[a++] = ALPHABET[b2 & mask]; 
       } 
       switch (size % 3) { 
        case 1: 
         ar[--a] = '='; 
        case 2: 
         ar[--a] = '='; 
       } 
       return new String(ar); 
      } 
} 
相关问题