PHP Web 服务 NuSOAP 复杂类型 [英] PHP Web Service NuSOAP complex type

查看:37
本文介绍了PHP Web 服务 NuSOAP 复杂类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用 NuSOAP 和客户端脚本编写了 php web 服务.我使用了数组复杂类型返回一个复杂类型的数组,但它什么也不打印!!

I wrote php web service using NuSOAP and client script. I used array complex type to return an array of complex type, but it's print nothing!!

server.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 返回产品数组

server.php return product array

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 打印函数结果

the client.php print the function result

请帮帮我.谢谢!

推荐答案

在这里,您的 WSDL 不起作用.转到您的 ..../server.php?wsdl.什么都没有显示.使用 $server->service(isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '');在 php 结束标记 (?>) 之前.那会做你的事情.保存后运行你的客户端.它将显示您的数组.

IN here your WSDL is not working. Go to your ..../server.php?wsdl. Nothing is displaying. Use $server->service(isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ''); before the php end tag(?>). That would do you the thing. After saving just run your client. It will display your array.

这篇关于PHP Web 服务 NuSOAP 复杂类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆