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

関連記事

hasOne アソシエーション

hasOneアソシエーションはテーブル間で1つのレコードに対して他のテーブルに紐付くレコードが1つの場合にjoinする場合に使用します。 CakePHPのドキュメントにならってUserモデルとP

Syslogログエンジン

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

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

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

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

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

selectボックスを実装

今まで、selectボックスのgroupを作成するのにSet::Combineを使用していましたが、意外と簡単にできることに気付いてしまったので、ご紹介。(自分だけ知らなかったことに気付いた と言った

Markdown Plugin

「Markdown CakePHP Plugin」は、MarkDown書式をレンダリングしてくれるビューヘルパーです。MarkDownについて勉強しているうちに出会ったので試し打ちです。 ダウンロー

CakePHP 2.x インストール

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

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

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

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

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

CSS/JSをひとまとめにして軽量化するプラグイン「Minify plugin for CakePHP」

「Minify plugin for CakePHP」は、インクルードするCSSもしくはJSファイルをひとまとめにしてキャッシュ化してくれるプラグインです。 導入 ダウンロード・解凍し

Comment

CakePHP関連feedとはてブ (@CakePHP_HBFeed) へ返信する コメントをキャンセル

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

*

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

    PAGE TOP ↑