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
  • このエントリーをはてなブックマークに追加

関連記事

DebugKitを導入

定番のブログチュートリアルをこなして、定番のDebugKitを導入してみました。 2.3からはCakePHPインストール直後に以下のように導入を推奨するような警告メッセージが表示されるようになりまし

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

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

recursive設定によるfind()性能改善

CakePHPでは、モデルにアソシエーションを設定している場合、recursive(=>joinする階層)はデフォルトで0に設定されています。「recursiveゼロ」の意味するところとは、「1跨ぎま

CakePHP 2.x インストール

現在まで私が商用・非商用にリリースしているCakePHPアプリケーションは全て1.3.xベースで作成しています。 まだまだロードマップ的には大丈夫そうですが、お客さん向けに納品しているアプリケーショ

ネストしたリストを出力「nestedList」

DBやJSONからデータを取得して、そのデータをもとにメニュー表示などネストしたリストを出力させたい場合に「nestedList」が便利です。 ヘルパーに渡すデータは連想配列である必要があります。(

入力文字列の長さ(文字数)をバリデーション

CakePHP 2には、コアバリデーションに文字列の長さを検証する関数が用意されています。 文字列長(コア)バリデーション minLength - 最小文字数以上であること maxLengt

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

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

多言語サイト向けに翻訳ファイルを使って翻訳を行う

CakePHPには、翻訳をビヘイビアを使用する方法と翻訳ファイルを使用する方法の2つがあるそうです。(他にもあるのかな?) 今回は、翻訳ファイルを使用して言語の切り替えを行い、その言語設定をCook

コントローラ内でバリデーション処理を呼び出す

CakePHPでは、saveメソッドの際にバリデーション処理も自動で行われますが、save処理と切り離してバリデーションを行うこともできます。このときは、save時と若干異なる処理体系になります。

Cookieログイン

今回は、ログイン画面でよくみかけるクッキーログインの機能を使ってみます。 CakePHPには、Cookieコンポーネントがあります。(PHPのsetcookieメソッドのラッパー)メソッドはwr

Comment

Message

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

*

PAGE TOP ↑