2007年7月16日月曜日

PHPを使ってサーバサイドでXMLをPOST

 サーバサイドで、SOAPやXML-RPCを使わずに素のXMLをPOSTしたい場合、PEAR::HTTP_Client::post() でPOSTできる。
 HTTP_Clientは PEAR::HTTP_Request などのラッパーで、内部的にはpost()の第2引数(mixed $data)が配列かどうかによって下記のようにHTTP_Requestのfunctionを呼び分けている。

  • 第2引数が配列の場合 :
     配列の各要素をHTTP_Request::addPostData() する
  • 第2引数が配列以外の場合 :
     第2引数をそのまま HTTP_Request::addRawPostData() する
 なので、素のXMLをPOSTしたい場合はpost()の第2引数にXMLの文字列を渡せばOK。XMLをpostの1つのフィールドに入れて渡したい場合は第2引数にarray(フィールド名 => XMLの文字列)を渡せばよい。


 ちなみに上記の2番目の方法でPOSTされた場合、フィールド名を指定してデータを取り出すことができない。PHPでデータを取り出す場合は下記のようにすればPOSTされたデータを取り出すことができる。
$xmlString = file_get_contents("php://input");

0 件のコメント:

ブログ アーカイブ

tags