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

関連記事

ログインに追加の条件を付与する「scope」

ユーザ登録では、仮登録処理(status=1)から送付したメール内のリンクをクリックしてもらい本登録(status=0)を行ってもらう実装をしました。仮登録の状態ではログインできないように実装するには

アップロードファイルのバリデーションルール

CakePHP 2.2や2.3になってファイルアップロードに対するルールがコアバリデーションに追加されているようで、まとめてみました。 コアバリデーション 関連しそうなルールは以下の4つの

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

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

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

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

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

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

checkボックスを実装

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

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

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

CakePHP 2.x インストール

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

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

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

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

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

Comment

Message

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

*

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

    PAGE TOP ↑