phpでHTTP X-WSSEヘッダを作成するサンプルスクリプト
mixiFeedでせっかく苦労してコーディングしたので公開しておきます。
動作には、PEARのHTTP_Requestが必要です。コードは以下の通り。この書き方だと、php5以降での動作のみ。
<?php
require_once ‘HTTP/Request.php’;
$user = ‘username’;
$pass = ‘password’;
$url = ‘URL’; //この3つを変更するだけでOKだと思います。多分。
$nonce = sha1(md5(time().rand()), TRUE); //nonceの中身は何でも良いので時間と乱数から。
$created = date(’Y-m-d\TH:i:s\Z’); //ここエスケープし忘れて手こずったので注意。
$digest = base64_encode(sha1($nonce . $created . $pass, TRUE));
$wsse_header = sprintf(’UsernameToken Username=”%s”, PasswordDigest=”%s”, Nonce=”%s”, Created=”%s”‘,$user, $digest, base64_encode($nonce), $created);
//ヘッダの中身をつくる。
$request = new HTTP_Request($url);
$request->addHeader(’X-WSSE’, $wsse_header); //ヘッダを追加。
if (PEAR::isError($request->sendRequest())) {
die(’request failed’);
} //リクエストを送る。?>
あとはgetResponseBody()とかそこらへんを煮るなり焼くなりすればいいと思います。
php4で実装したい人は、
sha1(hogehoge, TRUE)
ってところを
pack(‘H*’, sha1(hogehoge))
って書き換えればいいはず。試してないので、試した人とか居たら教えてください。





見づらくてすみません。
コメント by cod_tara — 1月 24日, 2008年 @ 3:32 pm
うちもこの方法でとある運送屋のシステム構築したなぁ~^^
コメント by よう — 1月 25日, 2008年 @ 1:23 am
配達状況調査サービスとかですか?
コメント by cod_tara — 1月 25日, 2008年 @ 8:59 pm