接口地址:http://sqiker.xicp.net:8989/medicalPlatform/services/HospitalDepartmentDAO?wsdl
接口说明:
类位置:services.IHospitalDepartmentDAO
获取某医院的所有科室
List<HospitalDepartment> findByHosSn(String hospitalSn)参数名 参数含义 参数类型 备注
hospitalSn 医院编号 String(16) 查询参数:
医院编号:zs001我用PHP写的一段代码来读取以上的接口,发现获取不到任何内容。请各位老大支招。
<?php
header("Content-Type:text/html;charset=UTF-8");
require_once("lib/nusoap.php");
// 要访问的webservice路径
$nusoapwsdl='http://sqiker.xicp.net:8989/medicalPlatform/services/HospitalDepartmentDAO?wsdl';
// 生成客户端对象
$client = new soapclient($nusoapwsdl);
  //print_r( $client->__getFunctions() ); 
  //print_r( $client->__getTypes() );
$client->soap_defencoding = 'utf-8';
$client->decode_utf8 = false;
$client->xml_encoding = 'UTF-8';
// 设置参数(注意:php只能以'数组集'方式传递参数,如果服务端是java,用map接收)
$param = array('hospitalSn'=>'zs001');
// 调用远程方法
$result = $client->call('findByHosSn', array($param));
// 显示执行结果
foreach ($result as $row){
echo $row[0].'<br />';
}
if (!$err=$client->geterror()){foreach ($result as $row){
echo $row ;
}
}else{
echo '错误 : '.$err;
}
?>

解决方案 »

  1.   

    Uncaught SoapFault exception: [soap:Client] WSS4JInHandler: Request does not contain required Security header
      

  2.   

    有header验证需要实现SoapHeader类/*
     *SoapHeader参数说明如下所示:
     *'http://tempuri.org/'   namespace(命名空间可省略)
     *'MySoapHeader'          SoapHeader头的类名
     *'array(...)'            存放标识身份的字符串参数
     *'true'                  是否必须处理该header
    */$u = new SoapHeader(http://tempuri.org/','MySoapHeader',array('UserName'=>'admin','PassWord'=>'123456'),true);//添加soapheader
    $s->__setSoapHeaders($u);
      

  3.   

    请问这个验证类的参数怎样构造呢?
    http://tempuri.org是不是可填可不填的?
    MySoapHeader这个类名是根据什么来写的呢?
    array('UserName'=>'admin','PassWord'=>'123456')这个问了提供接口的人说,没有设置用户名跟密码的。开发接口的人说的原文如下:我们这边没有针对SoapHeader的 username 跟password进行验证的 不过调用我们的webservice的时候 是要验证SoapHeader信息的 java调用的话安装Bouncy Castle就行了 php的话我这边就不太清楚了