PHP:SOAP Webservice工作不正常

时间:2016-03-12 17:20:13

标签: php web-services soap

我将更改功能名称是'价格',它的工作完美但其他名称给它发生错误如下

功能 - >

<?php
   function facto($name)
   {
      $details= array('abc' =>100 ,'xyz'=>210 );
      foreach ($details as $n => $p) {
               if($name==$n)
               $price=$p+100;
      }
      return $price;
    }
 ?>

客户端 - &GT;

<?php
require 'lib/nusoap.php';
$client=new  nusoap_client("http://localhost/WebServicePHP/service1.php?wsdl");
$book_name="abc";
$response=$client->call('facto',array("name"=>"$book_name"));
if(empty($response))
    echo "Book data not available";
else
    echo $response;
?>

服务 - &gt;

<?php
require 'functions.php';
require 'lib/nusoap.php';
$server=new nusoap_server();
$server->configureWSDL("demo","urn:demo");
$server- >register("facto",array("name"=>'xsd:string'),
    array("return"=>'xsd:intger'));

$HTTP_RAW_POST_DATA=isset($HTTP_RAW_POST_DATA)?
  $HTTP_RAW_POST_DATA:'';
$server->service($HTTP_RAW_POST_DATA); 
?>

现在返回错误,如

  

“注意:数组到字符串的转换   第9行上的C:\ xampp \ htdocs \ WebServiceExp \ factclient.php“

2 个答案:

答案 0 :(得分:0)

这是因为您在参数中传递数组并将该数组作为if条件中的字符串进行比较。

所以改变这一行:

$response=$client->call('facto',array("name"=>"$book_name"));

到此:

$response=$client->call('facto',$book_name);

或者改变你的if条件:

if($name==$n)

到此:

if(in_array($n,$name))

答案 1 :(得分:0)

  

“注意:数组转换为字符串   第9行上的C:\ xampp \ htdocs \ WebServiceExp \ factclient.php“

您尝试回显数组echo $response;的客户端代码的第9行上的问题。将其更改为var_dump($response);以查看此数组的结构,然后从此数组中回显适当的值