【问题标题】:ALM SaaS REST API 12.50 not working in PHPALM SaaS REST API 12.50 在 PHP 中不工作
【发布时间】:2017-03-12 04:45:14
【问题描述】:

我已尝试使用 PHP 中的以下代码从 ALM 获取缺陷详细信息,但在浏览器中未显示任何响应。 但在 POSTMAN 中也是如此。有人可以帮我吗

这里是REST API USAGE REST DOCUMENT FROM ALM的文档

我已经尝试过 Stackoverflow 的现有帖子

  1. HP ALM REST API login using PHP CURL
  2. ALM REST API v12.50 error 401

没有什么帮助,所以发布了一个新问题

注意:出于安全目的,标头值保留为编码值

 <?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;
    }
?>

【问题讨论】:

    标签: php rest curl postman alm


    【解决方案1】:

    我终于找到了解决办法,下面是方法

    首先我们需要从 ALM 身份验证链接获取 LWSSO_COOKIE_KEY,QCSession,ALM_USER,XSRF_TOKEN 值,然后我们应该将这些值用于后续调用

    以下是通过输入 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;
                    }
                }
        ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-04
      • 2021-06-11
      相关资源
      最近更新 更多