HTTP-Clientライブラリ
本サイトの「third_party」パッケージをインストール
「info.ci-guide.http-client.1.x.x.zip」を「application/third_paty/」ディレクトリに置き、解凍します。
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
- add_package_path()
CIG_http_clientクラスのロード
「CI_Loader」クラスの「library()」メソッドで「CIG_http_client」クラスをロードします。
第二引数には、「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) |
'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¶m2=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();