0

NuSOAP とクライアント スクリプトを使用して、PHP Web サービスを作成しました。配列複合型を使用して複合型の配列を返しましたが、何も出力されません!!

サーバー.php

<?php
        // Pull in the NuSOAP code
        require_once('nusoap-php5-0.9/lib/nusoap.php');
        ini_set ('soap.wsdl_cache_enabled', 0);
        // Create the server instance
        $server = new soap_server();
        // Initialize WSDL support
        $server->configureWSDL('GetCus', 'urn:GetCus');



        $server->wsdl->addComplexType(
    'Product',
    'complexType',
    'struct',
    'all',
    '',
    array(
        'Name' => array('name'=>'name','type'=>'xsd:string'),
        'Code' => array('name'=>'product_number','type'=>'xsd:string'),
    'Price' => array('name'=>'price','type'=>'xsd:int'),
        'Ammount' => array('name'=>'quantity','type'=>'xsd:int')
    )
);

$server->wsdl->addComplexType(
    'ProductArray',
    'complexType',
    'array',
    '',
    'SOAP-ENC:Array',
    array(),
    array(
        array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:Product[]')
    ),
    'tns:Product'
);



           // Register the method to expose
        $server->register('GetProductsByCode',                    // method name
            array(),          // input parameters
            array('return' => 'tns:ProductArray'),    // output parameters tns:Customer
            'urn:GetCus',                         // namespace
            'urn:GetCus#GetProductsByCode',                   // soapaction
            'rpc',                                    // style
            'encoded',                                // use
            'Get Customer Information'        // documentation
        );

   function GetProductsByCode()
   {
        $productArray=array();
        for($i=0; $i<5 ; $i++)
        {
          $product=array('Name' => 'somthing'.$i,
            'Code' => '23456yui'.$i,
            'Price' => 222*($i+1),
            'Ammount' => 5+$i
            );  
            $productArray[]=$product;
        }
     return $productArray;
   }
?>

server.php 戻り値の配列

client.php

<?php
require_once('nusoap-php5-0.9/lib/nusoap.php');
ini_set ('soap.wsdl_cache_enabled', 0);
try{
  $sClient = new nusoap_client('http://localhost/DataBaseTest/nusoap_server2.php?wsdl','wsdl','','','','');
  $response = $sClient->call('GetProductsByCode',array(),'','', false,true);
  print_r($response);
} catch(SoapFault $e){
  var_dump($e);
}
?>

client.php は関数の結果を出力します

助けてください。ありがとう!

4

1 に答える 1

0

ここで WSDL が機能していません。..../server.php?wsdl に移動します。何も表示されていません。$server->service(isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '');を使用します。 php 終了タグ (?>) の前。それはあなたのことをするでしょう。保存したら、クライアントを実行するだけです。配列が表示されます。

于 2013-01-04T03:23:20.630 に答える