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

関連記事

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

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

RSSフィードの取得

コンロトーラ public function getrssfeed() { try { $newsItems = $this->Rss->read( 'http://

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

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

ログローテーション

CakePHP 2.xではbootstrap.php内にあらかじめアプリケーションログの設定が書かれています。2.xで日付ごとにログファイルが切り替わるよう設定してみました。 日ごとにログを切り替え

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

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

(メール・URL・電話・郵便・IP) データ バリデーション

今回は、プロフィール情報に使用されるデータに絞ったバリデーションルールです。 バリデーションルール 以下の5つのバリデーションルールがコアに用意されています。 email メールアドレス

パス定数と変更方法やURLの取得

CakePHPは基本的にはディレクトリそのまま配置することで構築が可能ではありますが、設定パスを変更することでセキュリティに考慮した構成にすることや運用性をもたせたものにすることが可能になります。

Syslogログエンジン

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

Jsヘルパーを使用してAjax更新

更新処理でページ遷移を伴う場合、ページ全体をレスポンスするのに対して、Ajax処理ではページの一部のレスポンスが可能となるためサーバからの通信量を抑えることが可能となります。デモ head

日付・時間のバリデーション

日付や時刻に関するバリデーションは以下のルールがビルトインされています。 date 日付 time 時刻 datetime 日時 (m:「月」を数字表記 / M:「月」を英語表記)

Comment

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

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

*

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

    PAGE TOP ↑