CLIO只按显示号码返回物号

时间:2017-11-20 22:40:55

标签: php clio-api

Clio似乎没有解决办法,只能在这里问一下。 所以我走了。

我有显示号码,我想查询物质ID。 这似乎是不可能的,除非我做x-bulk查询循环抛出结果。

有没有人有简单的查询来执行此操作?

这是我到目前为止所拥有的PHP。

function matter_one ( $token,$refresh_toke ) {
    $header = 'Authorization: bearer '.$token."\r\n";
    //echo $header."\r\n";
    $offset = 0;
    $url = 'https://app.clio.com/api/v4/matters.json?&fields=id,description,display_number';
    //echo $url."\r\n";
    $ch = curl_init();
    //curl_setopt($ch, CURLOPT_VERBOSE, true); //used for trouble shooting.
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array($header));
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $resp = curl_exec($ch);
    print "curl response is:" . $resp;
    die();

3 个答案:

答案 0 :(得分:1)

有更好的方法,使用 https://app.clio.com/api/v4/matters?fields=id,display_number&query=100140

您将需要循环并检查显示数字是否与100140实际匹配,并且还将返回100140B和10014000。

答案 1 :(得分:0)

如果问题是您不想在此处执行x-bulk是将提取所有信息的代码,您可以修改代码以查找为每个页面返回的数据中的项目或在最终数组中查找。

    function performListRequestAllMatters()
{
    $header = 'Authorization: bearer ' . $this->token;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $this->base . $this->API_version . 'matters' . '?fields=id,display_number');
    curl_setopt($ch, CURLOPT_HTTPHEADER, array($header));
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    $response = curl_exec($ch);

    if (!$response) {
        die('Error: "' . curl_error($ch) . '" - Code: ' . curl_errno($ch));
    } elseif (200 != curl_getinfo($ch, CURLINFO_HTTP_CODE)) {
        echo "Bad Response Code!";
        echo "\n";
        echo "Response HTTP Status Code : " . curl_getinfo($ch, CURLINFO_HTTP_CODE);
        echo "\n";
        echo "Response HTTP Body : " . $response;
    } else {

        $json = json_decode($response, true);
        $list = $json['data'];

        while (isset($json['meta']['paging']['next'])) {
            // process a new request until all pages have been retrieved
            curl_setopt($ch, CURLOPT_URL, $json['meta']['paging']['next']);

            $response = curl_exec($ch);
            $json = json_decode($response, true);
            $newList = $json['data'];

            $list = array_merge($list, $newList);
        }

    }
    curl_close($ch);

    return $list;
}

答案 2 :(得分:0)

如果有10,000多条记录,则必须使用批量。 此功能非常适合获取所有记录。 然后你就可以找到你需要的数字。

function matter_ID_display ( $token,$refresh_toke ) {
            // this returns all the matter ID and display name

            //adding X-BULK
            $header = 'Authorization: bearer '.$token."\r\n"."X-BULK: true";
            //echo $header."\r\n";
            $offset = 0;
            $url = 'https://app.clio.com/api/v4/matters.json?offset='.$offset.'&fields=id,display_number';
            $cookie_jar = 'C:\Sites\Project for simmons and flecter\PHP\tmp\cookies.txt';
            $cookie_jar2 = 'C:\Sites\Project for simmons and flecter\PHP\tmp\cookies2.txt';
            //echo $url."\r\n";
            $ch = curl_init();
            //curl_setopt($ch, CURLOPT_VERBOSE, true); //used for trouble shooting.
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array($header));
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_HEADER, true);
            curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            $resp = curl_exec($ch);
            //print "curl response is:" . $resp;
            if( !$resp ) {
                die('Error: "' . curl_error( $ch ) . '" - Code: ' . curl_errno( $ch ) );
            }

            else if ( 200 != curl_getinfo( $ch, CURLINFO_HTTP_CODE ) ) {
                echo "Expected code 202";
                echo "\n";
                echo "Response HTTP Status Code : " . curl_getinfo( $ch, CURLINFO_HTTP_CODE );
                echo "\n";
                //echo "Response HTTP Body : " . $resp;
            }

            //$resp = json_encode($resp);
            $headers = get_headers_from_curl_response($resp);
            //$headers = json_encode($headers);
            //print_r ($headers);
            $url = $headers["Location"];
            echo "url for getting the bulk data\r\n";
            echo $url."\r\n";
            echo "\n";

            curl_close($ch);
            //sleep for x seconds
            //have to sleep due to processing at clio
                $seconds = 20;
                echo "Sleeping for ".$seconds." seconds\r\n";
                sleep($seconds);
                echo "\n";  
        // seperate curl_
                $curl = curl_init();

                curl_setopt_array($curl, array(
                  CURLOPT_URL => $url,
                  CURLOPT_COOKIEJAR => $cookie_jar2,    
                  CURLOPT_COOKIEFILE=> $cookie_jar2,
                  CURLOPT_CUSTOMREQUEST => "GET",
                  CURLOPT_HTTPHEADER => array("authorization: Bearer ".$token),
                  CURLOPT_SSL_VERIFYPEER => false,     // Disabled SSL Cert checks
                  CURLOPT_AUTOREFERER    => true,     // set referer on redirect
                  CURLOPT_FOLLOWLOCATION => true,     // follow redirects
                  CURLOPT_ENCODING => "",  // handle all encodings
                  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                  CURLOPT_RETURNTRANSFER => true, // return web page
                 ));

                $response = curl_exec($curl);
                $err = curl_error($curl);

                curl_close($curl);
                if ($err) {
                  echo "cURL Error #:" . $err;
                } else {
                      echo 'Curled first time';
                      echo "\n";
                      // have to curl two times one without authorization
                        echo "\n";
                        Echo "cURL repeat";
                        echo "\n";
                        $curl = curl_init();

                            curl_setopt_array($curl, array(
                            CURLOPT_URL => $url,
                            CURLOPT_COOKIEJAR => $cookie_jar2,  
                            CURLOPT_COOKIEFILE=> $cookie_jar2,
                            CURLOPT_CUSTOMREQUEST => "GET",
                            //CURLOPT_HTTPHEADER => array("authorization: Bearer ".$token),
                            CURLOPT_SSL_VERIFYPEER => false,     // Disabled SSL Cert checks
                            CURLOPT_AUTOREFERER    => true,     // set referer on redirect
                            CURLOPT_FOLLOWLOCATION => true,     // follow redirects
                            CURLOPT_ENCODING => "",  // handle all encodings
                            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                            CURLOPT_RETURNTRANSFER => true, // return web page
                            ));

                            $response = curl_exec($curl);
                            $err = curl_error($curl);
                        curl_close($curl);
                        if ($err) {
                            echo "cURL Error #:" . $err;
                        } else 
                            {echo 'Good Reponse from Curl second time';
                            echo "\n";}
                    }

                $response_Decode = json_decode($response);
                //print_r ($response_Decode);

                    // got the data. Now just need to turn to a clean array and save to file.
                    //die('Before Array clean up');

            //clean and make into an array
                $response_Decode=$response_Decode->data;
                $response_Decode=$response_Decode[0];
                //print_r ($response_Decode);
                //die(); //For testing
                $matter_array = array();     
                if(!empty($response_Decode->data) && is_array($response_Decode->data)) {
                    foreach ($response_Decode->data as $info) {
                        $d = array();
                        $d[] = $info->display_number;
                        $d[] = $info->id;
                        $matter_array[] = $d;
                    }
                }

                print_r($matter_array);  //For testing
                die(); //For testing

            //matter_array is a full array of all matter ID and Matter Display numbers  
            return $matter_array; }