HttpSocketを使用してリクエスト送信

CakePHPには、Webサービスへのリクエスト送信のためのHttpSocketクラスが用意されています。

HttpSocket get

HTTP GETリクエストを発行します。デモ

function getlandmark(){
    $client_id = <Client ID(48桁の英数字:要取得)>;
    $client_secret = <Client Secret(48桁の英数字:要取得)>;

    App::uses( 'HttpSocket', 'Network/Http');
    $HttpSocket = new HttpSocket( array( 'ssl_verify_host' => false));
    $url = "https://api.foursquare.com/v2/venues/search?";
    $params = array(
        'll' => $this->data['Foursquare']['geocode'],
        'client_id' => $client_id,
        'client_secret' => $client_secret,
        'v' => '20120712',
        'locale' => 'en'
    );
    // request
    $jresponse = $HttpSocket->get( $url, $params);
    // decoding JSON
    $aresponse = json_decode( $jresponse, true);
}
    string get($uri, $query, $request)

  • $uri:リクエスト送信先のWebアドレス
  • $query:$uriに付与するパラメータ
    文字列として結合するか、パラメータ名をキーに配列としても作成できます。

    "param1=foo&param2=bar"
    もしくは
    array('param1' => 'foo', 'param2' => 'bar')
  • $request:?

HttpSocketの設定

2.3 Migration GuideのHttpSocketによると、デフォルトでSSL証明書の検証を行うように変更されたようです。

stream_socket_client(): Peer certificate CN=`*.a.ssl.fastly.net' did not match expected CN=`api.foursquare.com' stream_socket_client(): Failed to enable crypto stream_socket_client(): unable to connect to ssl://api.foursquare.com:443 (Unknown error)

と怒られる場合があります。証明書のホスト名とCN(コモンネーム)が異なる場合に発生しますので、ssl_verify_hostをfalseに設定してHttpSocketインスタンスを生成して下さい。

    $HttpSocket = new HttpSocket( array( 'ssl_verify_host' => false));

HttpSocket doesn't look at SSL certificate CN alternatives

HttpSocketクラス:/lib/Cake/Network/Http/HttpSocket.php
Utilities > HttpSocket
  • このエントリーをはてなブックマークに追加

関連記事

Blowfishを使用してハッシュ化する

使用方法 Blowfishを採用してハッシュ化を行う場合、Securityクラスのhashメソッドを呼び出します。第2引数に'blowfish'を指定し、第3引数を指定しないもしくはfalseにしま

複数ファイルアップロードフォーム

CakePHP 2.0からはHTML5が標準でサポートとなり、複数ファイルアップロードのためのフォーム記述が容易になりました。 View (ビュー) 配列 Array (

Syslogログエンジン

2.4から「Syslog」ログクラスが追加され、簡単にSyslogを使用できるようになりました。 CakePHP側の設定はbootstrap.php内のCakeLogコンフィグのengineを'Sy

ユーザ登録(仮登録・メール・本登録)

以前1.3版で投稿した「ユーザ登録」処理の2.x版を作成しました。フローは同じで以下のようにします。 1. メールアドレス・パスワードでユーザ登録 2. この時点では仮登録として、本登録用のU

バリデーション前後に処理を追加できる「beforeValidate」「afterValidate」

CakePHPでは、「beforeValidate」「afterValidate」というバリデーション処理の前後で追加の処理を実装できるコールバック関数が用意されています。 beforeVali

SQLクエリーをログに出力する

SQLのクエリーをデバッグするには、Debug Kitを使用すればできますが、デバッグログと一緒に出したいのでやり方を調査してみました。 別々のログやビューでみるのもいいですが、秒単位で実行される処

テーブルからランダムにデータを取り出す(find)

CakePHPでテーブルから特定件数のレコードをランダムに取得するには以下のように指定するとできます。 $this->data = $this->Bulkdata->find( 'all',

checkボックスを実装

selectボックスに引き続いてcheckボックスの実装方法をおさらいしてみます。 コードは、CakePHP 2と1.3両方で実装可能です。デモ モデルは、こちらも以下 CREATE TA

FormヘルパーのMagicOption (マジックオプション) 

Formヘルパーでは、「フィールド名」,「テーブルカラムのデータ型」もしくはモデルの「バリデーション設定」によりフォーム要素を決定したり、自動で属性を付与する「マジックオプション」と呼ばれるものがある

ハッシュ関数の選択とハッシュ化処理

CakePHPでは、ログイン時にはpasswordを自動的にハッシュ化して認証を行ってくれますが、そのパスワードを登録する際は、明示的にハッシュ化する必要があります。 ハッシュ関数の選択 ハッ

Comment

@RSS_hateb_l_Roy へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

    PAGE TOP ↑