このエントリーをはてなブックマークに追加

更新日: 2016年2月25日

実行時間: 0.0222

HTTP-Clientライブラリ


本サイトの「third_party」パッケージをインストール

「info.ci-guide.http-client.1.x.x.zip」を「application/third_paty/」ディレクトリに置き、解凍します。

    cd application/third_party/
    unzip info.ci-guide.http-client.1.x.x.zip

 パッケージパス

 パッケージパスを「application/config/autoload.php」 自動ロード設定ファイルで設定するか、
「CI_Loader」コアクラスの「add_package_path()」 メソッドで「info.ci-guide」パッケージのパスを設定します。

  • application/config/autoload.php
  • $autoload['packages'] = array(APPPATH . 'third_party/info.ci-guide');
  • add_package_path()
  • $this->load->add_package_path(APPPATH . 'third_party/info.ci-guide');

CIG_http_clientクラスのロード

 「CI_Loader」クラスの「library()」メソッドで「CIG_http_client」クラスをロードします。
第二引数には、「CIG_http_client」クラスを初期化するための設定情報を指定することができます。 指定しない場合はデフォルト設定値が適用されます。

  • デフォルトロード
  • $this->load->library('cig_http_client');
  • 初期化設定項目
  • 設定項目 デフォルト 設定値 説明
    connect_timeout 5 秒数 接続の試行を待ち続ける秒数、0 は永遠に待ち続ける(CURLOPT_CONNECTTIMEOUT)
    timeout 10 秒数 cURL 関数の実行にかけられる時間の最大秒数(CURLOPT_TIMEOUT)
    verbose FALSE TRUE, FALSE デバッグ情報をログに出力するか否かを設定
    username NULL 文字列 接続に使用するユーザー名(CURLOPT_USERPWD)
    password NULL 文字列 接続に使用するユーザーのパスワード(CURLOPT_USERPWD)
  • 初期化設定を指定
  • $config = array(
        'connect_timeout' => 10
        'timeout' => 20
        'verbose' => TRUE
        'username' => 'hoge'
        'password' => 'abcdefg123'
    )
    $this->load->library('cig_http_client', $config);

HTTP-Clientライブラリの利用

initialize($config = array())

 設定情報を動的に初期化します。
複数の接続を行う際などに利用します。

    $this->load->library('cig_http_client');
    
    $config['connect_timeout']  = 10;
    $config['timeout']          = 20;
    $config['verbose']          = TRUE;
    
    $this->cig_http_client->initialize($config);
    

set_url($url)

接続先のURLを設定します。

    $this->cig_http_client->set_url('http://localhost/test/');
    

set_host($host)

HTTPリクエストヘッダ「Host:」を設定します。
開発時など、ローカルバーチャルホスト環境に接続する際に利用します。

    $this->cig_http_client->set_host('vhost.mysite.com');
    

set_method($method)

リクエストするHTTPメソッドを「GET」、もしくは、「POST」で設定します。
デフォルトは「GET」です。

    $this->cig_http_client->set_method('POST');
    

set_query($queries, $url_encoded = FALSE)

リクエストデータを設定します。
リクエストHTTPメソッドが「GET」の場合は、GETクエリとして「?param=value」形式でURIに付加されます。 リクエストHTTPメソッドが「POST」の場合は、POSTデータとして付加されます。

クエリデータは、連想配列で指定します。
クエリの各値をURLエンコードする必要がある場合は、第二引数にTRUEを指定します。

    $this->cig_http_client->set_method('GET');
    $queries = array(
      'param1' => 'バリュー1',
    );
    $this->cig_http_client->set_query($queries, TRUE);
    
    // http://localhost/test/?param1=%e3%83%90%e3%83%aa%e3%83%a5%e3%83%bc%ef%bc%9
    
    $this->cig_http_client->set_method('POST');
    $queries = array(
      'param1' => 'value1',
      'param2' => 'value2',
    );
    $this->cig_http_client->set_query($queries, FALSE);
    
    // リクエストボディ:
    // param1=value1&param2=value2
    

set_http_header($header=array())

リクエストするHTTPヘッダを配列で指定します。

    $header = array(
      'User-Agent: MyOriginalUA/1.0',
      'Referer: http://my.original-site.com/'
    );
    $this->cig_http_client->set_http_header($header);
    

set_auth($auth=array())

HTTP認証情報を初期化します。

    $auth = array(
      'username' => 'myid',
      'password' => 'mypassword',
    );
    $this->cig_http_client->set_auth($auth);
    

request()

HTTP接続を行います。
成功すると「TRUE」、失敗すると「FALSE」を返します。

    $this->cig_http_client->set_url('http://localhost/test/');
    
    if ($this->cig_http_client->request()) {
      // 接続成功
    } else {
      // 接続失敗
    }
    

get_response_code()

接続に成功した場合、HTTPサーバから取得したHTTPレスポンスコードを返します。

    $this->cig_http_client->set_url('http://localhost/test/');
    
    if ($this->cig_http_client->request()) {
      if ($this->cig_http_client->get_response_code() == '200') {
        // 200 OK
      } elseif (($this->cig_http_client->get_response_code() == '404') {
        // 404 Not Found
      }
    }
    

get_response_data()

接続に成功した場合、HTTPサーバから取得したHTMLなどのHTTPレスポンスデータを返します。
HTTPレスポンスヘッダは含まれません。

    if ($this->cig_http_client->request()) {
      if ($this->cig_http_client->get_response_code() == '200') {
    
        $html = $this->cig_http_client->get_response_data();
    
      } elseif (($this->cig_http_client->get_response_code() == '404') {
        // 404 Not Found
      }
    }
    

get_response_header($header)

 接続に成功した場合、HTTPサーバから取得したHTTPレスポンスヘッダの情報を返します。 引数には、「content-type」などのように、必要なHTTPレスポンスヘッダを文字列で指定します。

    if ($this->cig_http_client->request()) {
      if ($this->cig_http_client->get_response_code() == '200') {
    
        $content_type = $this->cig_http_client->get_response_header('content-type');
    
      } elseif (($this->cig_http_client->get_response_code() == '404') {
        // 404 Not Found
      }
    }
    

get_response_headers()

 接続に成功した場合、HTTPサーバから取得した全てのHTTPレスポンスヘッダ情報を連想配列で返します。

    if ($this->cig_http_client->request()) {
    
      if ($this->cig_http_client->get_response_code() == '200') {
    
        $res_header = $this->cig_http_client->get_response_headers();
    
      }
    
    }
    

    $res_headerの中身の例

    array (
      'location' => 'http://localhost/test/',
      'cache-control' => 'private',
      'content-type' => 'text/html; charset=UTF-8',
      'date' => 'Wed, 30 Jul 2014 15:31:41 GMT',
      'content-length' => '233',
    )
    

json_decode()

 HTTPサーバがJsonデータを返す場合、レスポンスデータをJsonデコードした配列データとして返します。

    $this->cig_http_client->set_url('http://localhost/json/');
    
    if ($this->cig_http_client->request()) {
    
      if ($this->cig_http_client->get_response_code() == '200') {
    
        echo $this->cig_http_client->get_response_body();
        // {"key":"value"}
        $json = $this->cig_http_client->json_decode();
    
      }
    
    }
    

    $jsonの中身の例

    array (
      'key' => 'value'
    )
    

get_curl_error()

 接続に失敗した場合、 cURLエラーコードとcURLエラーメッセージからなるエラー情報を返します。

    if (! $this->cig_http_client->request()) {
        $error = $this->cig_http_client->get_curl_error();
    }
    

    $errorの中身の例

    array (
      'errno' => 7,
      'error' => 'couldn\'t connect to host'
    )
    

close()

 明示的に、cURLセッションを閉じます。

    $this->cig_http_client->close();