Top > xtra > php_manual > xmlrpc > xmlrpc_encode_request

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

** 説明 [#b25080f0]
 string xmlrpc_encode_request(string $method, mixed $params[, array $output_options])

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

** 返り値 [#c0578e4a]
XML 全体が文字列として返されます。

** 例 [#m9c0c7a3]
次の例は 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/xmlrpc/server', false, $context);
 )));
 $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'}) として変換されました。

    Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes

© 2006-2008 Internet Revolution