1月 24日, 2008年

phpでHTTP X-WSSEヘッダを作成するサンプルスクリプト

Filed under: php, プログラミング, 覚え書き — cod_tara @ 3:31 pm

 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))

って書き換えればいいはず。試してないので、試した人とか居たら教えてください。

Comments and TrackBacks

コメント (3) »

  1. 見づらくてすみません。

    コメント by cod_tara — 1月 24日, 2008年 @ 3:32 pm

  2. うちもこの方法でとある運送屋のシステム構築したなぁ~^^

    コメント by よう — 1月 25日, 2008年 @ 1:23 am

  3. 配達状況調査サービスとかですか?

    コメント by cod_tara — 1月 25日, 2008年 @ 8:59 pm

コメント RSS トラックバック URL

コメントをどうぞ

[プレスブログ]価値あるブログに掲載料をお支払いします。