Top > xtra > php_manual > xmlrpc > xmlrpc_encode_request

xmlrpc_encode_request

PHP ネイティブ形式の配列から XML-RPC リクエストの XML を生成する

説明

string xmlrpc_encode_request(string $method, mixed $params[, array $output_options])

パラメータ

method
XML-RPC のメソッド名を文字列で渡します。
params
リストである配列を渡した場合は、引数として扱われます。 それ以外を渡した場合は、第1引数として扱われます。
output_options
XML を生成する際のオプションを設定します。 xmlrpc の output_options を参照。日本語を扱う場合は注意して設定してください。

返り値

XML 全体が文字列として返されます。

次の例は XML-RPC クライアントの例です。 XML-RPC クライアントの場合は xmlrpc_encode_request と xmlrpc_decode の 2 つの関数を使います。 XML-RPC サーバの場合は xmlrpc_decode_request を参照してください。

<?php
$xml = xmlrpc_encode_request('php.trim', ' test string ', 
 array('escaping'=>'markup', 'encoding'=>'UTF-8'));
$context = stream_context_create(array('http' => array(
  'method' => 'POST',
  'header' => "Content-type: text/xml\r\nContent-length: ".strlen($xml),
  'content' => $xml
)));
$response_xml = file_get_contents('http://example.jp/xmlrpc/server', false, $context);
$response = xmlrpc_decode($response_xml);
?>

params がリストの配列かどうかで挙動が変わることは、次のような例で説明されます。

<?php
var_dump(xmlrpc_encode_request('test', array(1,2,3)));
var_dump(xmlrpc_encode_request('test', array('a'=>12,'b'=>'c')));
?>

この出力結果は:

string(288) "<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>test</methodName>
<params>
 <param>
  <value>
   <int>1</int>
  </value>
 </param>
 <param>
  <value>
   <int>2</int>
  </value>
 </param>
 <param>
  <value>
   <int>3</int>
  </value>
 </param>
</params>
</methodCall>
"
string(378) "<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>test</methodName>
<params>
 <param>
  <value>
   <struct>
    <member>
     <name>a</name>
     <value>
      <int>12</int>
     </value>
    </member>
    <member>
     <name>b</name>
     <value>
      <string>c</string>
     </value>
    </member>
   </struct>
  </value>
 </param>
</params>
</methodCall>
"

このように、1 つめは test(1,2,3) として変換され、2 つめは test({'a':12,'b':'c'}) として変換されました。


Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes
Last-modified: (1877d)

© 2006-2008 Internet Revolution