2016-10-29 11 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. StackOverflowの

      から既存の投稿を試してみましたが、助けている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; 
           } 
          } 
        ?> 
    
    関連する問題