スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Zend_Http_Clientで同じ名前のQueryStringのパラメーターを使う

Zend_Http_ClientでsetParameterGetを使うと連想配列の値をURLのQueryStringに展開してくれます。
$paramAry = {'name' => 'aaa', 'age' => 99}

name=aaa&age=99
になります。

URLの中には同じ名前のパラメーターを利用できます。
例えばbitlyのclick数を返すAPIでは、shortUrlのいうパラメーターを最大15個使えます。
そこで、setParameterGetを使ってみたのですが
$paramAry = {'shortUrl' => 'http://bit.ly/afj1Fq', 'shortUrl' => 'http://bit.ly/a8Pm0M'}

shortUrl[0]=http://bit.ly/afj1Fq&shortUrl[1]=http://bit.ly/a8Pm0M
になってしまいました。これでコールするとエラーが返ってきます。

当初Zend_Http_Clientを派生させて対応しようと思ったのですが、メイン処理の内部でhttp_build_queryを直接呼びまくっていたので断念。
結局setParameterGetを使わずZend_Http_Clientのコンストラクター引数として渡すURLにQueryStringを展開済みにして渡すことにしました。
幸いhttp_build_queryのマニュアルのページに対処法があったのでそれを利用しました。

$query_string = http_build_query($paramAry);
$query_string = preg_replace('/%5B(?:[0-9]|[1-9][0-9]+)%5D=/', '=', $query_string);
$client = new Zend_Http_Client("http://api.bit.ly/v3/clicks?" . $query_string);
スポンサーサイト

COMMENTS

COMMENT FORM

TRACKBACK


この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。