2016-10-29 4 views
1

ALM의 결함 세부 정보를 얻기 위해 PHP에서 아래 코드를 시도했지만 브라우저에서 응답을 보이지 않습니다. 하지만 POSTMAN에서도 마찬가지입니다. 누군가가 여기에 ALM SaaS REST API 12.50이 PHP에서 작동하지 않습니다.

가 이미 HP ALM REST API login using PHP CURL
  • ALM REST API v12.50 error 401
  • 아무것도

    1. 유래

      에서 기존 게시물을 시도 돕고있다 REST DOCUMENT FROM ALM

      REST API 사용의 문서 여기 좀 도와 줄래 새로운 질문이 게시되었습니다.

      참고 : 보안 목적의 헤더 값으로 인해, 나는 마침내 해결책을 발견

      <?php 
      
          $curl = curl_init(); 
      
          curl_setopt_array($curl, array(
           CURLOPT_URL => "https://hostname/qcbin/api/domains/domainname/projects/projectname/defects/?limit=10", 
           CURLOPT_RETURNTRANSFER => true, 
           CURLOPT_ENCODING => "", 
           CURLOPT_MAXREDIRS => 10, 
           CURLOPT_TIMEOUT => 30, 
           CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
           CURLOPT_CUSTOMREQUEST => "GET", 
           CURLOPT_HTTPHEADER => array(
           "authorization: Basic encoded value", 
           "cache-control: no-cache", 
           "postman-token: a8a2398d-7a0a-0ebd-a586-58a40e524a9a" 
          ), 
          )); 
      
          $response = curl_exec($curl); 
          $err = curl_error($curl); 
      
          curl_close($curl); 
      
          if ($err) { 
           echo "cURL Error #:" . $err; 
          } else { 
           echo $response; 
          } 
      ?> 
      

    답변

    1

    인코딩 된 값으로 유지하고 아래 우리가 LWSSO_COOKIE_KEY, QCSession에 도착해야합니다

    먼저 접근 방법이다 ALM_USER, XSRF_TOKEN 값을 ALM 인증 링크에서 가져온 다음 호출에 값을 사용해야합니다.

    다음은 입력하여 결함 목록을 얻는 완전한 작업 코드입니다 ALM 자격증 명

     <?php 
         $curl = curl_init(); 
         Header('Content-type: application/json'); 
         $credentials = "username:password"; 
         curl_setopt_array($curl, array(
          CURLOPT_URL => "https://host:port/qcbin/api/authentication/sign-in", 
          CURLOPT_ENCODING => "", 
          CURLOPT_MAXREDIRS => 10, 
          CURLOPT_TIMEOUT => 30, 
          CURLOPT_HEADER => 1, 
          CURLOPT_RETURNTRANSFER => 1, 
          CURLOPT_SSL_VERIFYHOST => 0, 
          CURLOPT_SSL_VERIFYPEER => 0, 
          CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
          CURLOPT_CUSTOMREQUEST => "GET", 
          CURLOPT_HTTPHEADER => array(
           "authorization: Basic " . base64_encode($credentials) , 
           "cache-control: no-cache" 
          ) , 
         )); 
         $response = curl_exec($curl); 
         $err = curl_error($curl); 
         curl_close($curl); 
    
         if ($err) 
          { 
          echo "cURL Error #:" . $err; 
          } 
          else 
          { 
    
          // If there is no error then get the response to form the array of headers to get the different values required 
    
          $array_start = explode(';', $response); 
          foreach ($array_start as $key => $value) { 
        $remove_from_string = ['HTTP/1.1 200 OK','Path=/','HTTPOnly','HttpOnly','Content-Length',': 0']; 
        $replace_array = ['','','','','','']; 
        $value = str_replace($remove_from_string,$replace_array,$value); 
        $value = trim(preg_replace(('/Expires: [a-zA-Z]+, [0-9]+ [a-zA-Z]+ [0-9]+ [0-9]+:[0-9]+:[0-9]+ [a-zA-Z]+/'), '', $value)); 
        $value = trim(preg_replace(('/Server: [a-zA-Z0-9.\(\)]+/'),'',$value)); 
        if (!empty($value)) { 
         $almheaders[trim(explode('=',$value)[0])] = explode('=',$value)[1]; 
        } 
    } 
          $LWSSO_COOKIE_KEY = $almheaders['Set-Cookie: LWSSO_COOKIE_KEY']; 
          $QCSession = $almheaders['Set-Cookie: QCSession']; 
          $ALM_USER = $almheaders['Set-Cookie: ALM_USER']; 
          $XSRF_TOKEN = $almheaders['Set-Cookie: XSRF-TOKEN']; 
    
          // Now form the Cookie value from the above values. 
    
          $cookie = "Cookie: JSESSIONID=33eyr1y736486zcnl0vtmo12;XSRF-TOKEN=$XSRF_TOKEN;QCSession=$QCSession;ALM_USER=$ALM_USER;LWSSO_COOKIE_KEY=$LWSSO_COOKIE_KEY"; 
    
          // echo $cookie; 
    
          $curl = curl_init(); 
          Header('Content-type: application/json'); 
          curl_setopt_array($curl, array(
           CURLOPT_URL => "https://host:port/qcbin/api/domains/CET_NTD/projects/BILLING_OPERATIONS/defects", 
    
           // CURLOPT_RETURNTRANSFER => true, 
    
           CURLOPT_ENCODING => "", 
           CURLOPT_MAXREDIRS => 10, 
           CURLOPT_TIMEOUT => 30, 
           CURLOPT_HEADER => 0, 
           CURLOPT_RETURNTRANSFER => 1, 
           CURLOPT_SSL_VERIFYHOST => 0, 
           CURLOPT_SSL_VERIFYPEER => 0, 
           CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
           CURLOPT_CUSTOMREQUEST => "GET", 
           CURLOPT_HTTPHEADER => array(
            "authorization: Basic " . base64_encode($credentials) , 
            "cache-control: no-cache", 
            "Accept: application/json", 
            $cookie 
           ) , 
          )); 
          $response = curl_exec($curl); 
          $err = curl_error($curl); 
          curl_close($curl); 
          if ($err) 
           { 
           echo "cURL Error #:" . $err; 
           } 
           else 
           { 
           echo $response; 
           } 
          } 
        ?> 
    
    관련 문제