现在要做php调用java做的webservice。wsdl文件如下<definitions name='OpenService2011' targetNamespace='http://www.zs.gov.cn' xmlns='http://schemas.xmlsoap.org/wsdl/' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:tns='http://www.zs.gov.cn' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
 <types>
  <xs:schema targetNamespace='http://www.zs.gov.cn' version='1.0' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
   <xs:complexType name='openInfo'>
    <xs:sequence>
     <xs:element name='aid' type='xs:int'/>
     <xs:element minOccurs='0' name='builddate' type='xs:dateTime'/>
     <xs:element minOccurs='0' name='ccatcode' type='xs:string'/>
     <xs:element minOccurs='0' name='ccatname' type='xs:string'/>
     <xs:element minOccurs='0' name='content' type='xs:string'/>
     <xs:element minOccurs='0' name='description' type='xs:string'/>
     <xs:element minOccurs='0' name='docno' type='xs:string'/>
     <xs:element name='id' type='xs:int'/>
     <xs:element minOccurs='0' name='identifier' type='xs:string'/>
     <xs:element name='isupload' type='xs:int'/>
     <xs:element minOccurs='0' name='keywords' type='xs:string'/>
     <xs:element minOccurs='0' name='language' type='xs:string'/>
     <xs:element name='linkid' type='xs:int'/>
     <xs:element name='linktype' type='xs:int'/>
     <xs:element minOccurs='0' name='mddate' type='xs:dateTime'/>
     <xs:element minOccurs='0' name='online' type='xs:string'/>
     <xs:element minOccurs='0' name='opentype' type='xs:string'/>
     <xs:element minOccurs='0' name='procode' type='xs:string'/>
     <xs:element minOccurs='0' name='proindex' type='xs:string'/>
     <xs:element minOccurs='0' name='proname' type='xs:string'/>
     <xs:element minOccurs='0' name='pubcode' type='xs:string'/>
     <xs:element minOccurs='0' name='pubname' type='xs:string'/>
     <xs:element minOccurs='0' name='ridxid' type='xs:string'/>
     <xs:element minOccurs='0' name='rtitle' type='xs:string'/>
     <xs:element minOccurs='0' name='scatcode' type='xs:string'/>
     <xs:element minOccurs='0' name='scatname' type='xs:string'/>
     <xs:element name='state' type='xs:int'/>
     <xs:element minOccurs='0' name='tcatcode' type='xs:string'/>
     <xs:element minOccurs='0' name='tcatname' type='xs:string'/>
     <xs:element minOccurs='0' name='title' type='xs:string'/>
     <xs:element minOccurs='0' name='trimTitle' type='xs:string'/>
    </xs:sequence>
   </xs:complexType>
  </xs:schema>
 </types>
 <message name='Open2011_getOpenInfoResponse'>
  <part name='return' type='tns:openInfo'></part>
 </message>
 <message name='Open2011_insertResponse'>
  <part name='return' type='xsd:int'></part>
 </message>
 <message name='Open2011_getOpenInfo'>
  <part name='arg0' type='xsd:int'></part>
 </message>
 <message name='Open2011_searchResponse'>
  <part name='return' type='xsd:string'></part>
 </message>
 <message name='Open2011_insert'>
  <part name='arg0' type='tns:openInfo'></part>
  <part name='arg1' type='xsd:string'></part>
 </message>
 <message name='Open2011_search'>
  <part name='arg0' type='tns:openInfo'></part>
  <part name='arg1' type='xsd:int'></part>
  <part name='arg2' type='xsd:int'></part>
  <part name='arg3' type='xsd:string'></part>
 </message>
 <portType name='Open2011'>
  <operation name='getOpenInfo' parameterOrder='arg0'>
   <input message='tns:Open2011_getOpenInfo'></input>
   <output message='tns:Open2011_getOpenInfoResponse'></output>
  </operation>
  <operation name='insert' parameterOrder='arg0 arg1'>
   <input message='tns:Open2011_insert'></input>
   <output message='tns:Open2011_insertResponse'></output>
  </operation>
  <operation name='search' parameterOrder='arg0 arg1 arg2 arg3'>
   <input message='tns:Open2011_search'></input>
   <output message='tns:Open2011_searchResponse'></output>
  </operation>
 </portType>
 <binding name='Open2011Binding' type='tns:Open2011'>
  <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>
  <operation name='getOpenInfo'>
   <soap:operation soapAction=''/>
   <input>
    <soap:body namespace='http://www.zs.gov.cn' use='literal'/>
   </input>
   <output>
    <soap:body namespace='http://www.zs.gov.cn' use='literal'/>
   </output>
  </operation>
  <operation name='insert'>
   <soap:operation soapAction=''/>
   <input>
    <soap:body namespace='http://www.zs.gov.cn' use='literal'/>
   </input>
   <output>
    <soap:body namespace='http://www.zs.gov.cn' use='literal'/>
   </output>
  </operation>
  <operation name='search'>
   <soap:operation soapAction=''/>
   <input>
    <soap:body namespace='http://www.zs.gov.cn' use='literal'/>
   </input>
   <output>
    <soap:body namespace='http://www.zs.gov.cn' use='literal'/>
   </output>
  </operation>
 </binding>
 <service name='OpenService2011'>
  <port binding='tns:Open2011Binding' name='Open2011Port'>
   <soap:address location='http://127.0.0.1:87/services2011/OpenService2011'/>
  </port>
 </service>
</definitions>
我的调用代码如下: $client = new SoapClient(null,array('location' =>"http://www.zs.gov.cn:87/services2011/OpenService2011?wsdl",'uri'=> "http://www.zs.gov.cn"),'1.0',0);
$header = new SoapHeader(array('username' =>$userName,'password' => $password));
$client->__setSoapHeaders($header);
$param=array('id' => 3092);
$arr=$client->__soapCall("getOpenInfo", $param);
print_r($arr); 
出现错误:
Fatal error: Uncaught SoapFault exception: [Client] SoapClient::SoapClient() [<a href='soapclient.soapclient'>soapclient.soapclient</a>]: Invalid parameters in D:\myweb\web\zstop_web\top_hui\test\test.php:4 Stack trace: #0 D:\myweb\web\zstop_web\top_hui\test\test.php(4): SoapClient->SoapClient(NULL, Array, '1.0', 0) #1 {main} thrown in D:\myweb\web\zstop_web\top_hui\test\test.php on line 4
第一次用php调用webservice。请各位高手帮忙看看,在线等,感激不尽。

解决方案 »

  1.   

     $param=array('id' => 3092); <message name='Open2011_getOpenInfo'>
      <part name='arg0' type='xsd:int'></part>
     </message>
    id ->  arg0
      

  2.   

    问题已经解决,接口开发的人提供了一个ASP的例子,照着写了一个php的。function getInfoById($url,$username,$password,$id)
    {
    $xmlhttp =new COM("Msxml2.ServerXMLHTTP"); $SoapRequest = "<?xml version='1.0' encoding='utf-8'?>" ;    
    $SoapRequest = $SoapRequest."<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://www.w3.org/2003/05/soap-envelope'>"; 
    $SoapRequest = $SoapRequest."<soap:Body>";    
    $SoapRequest = $SoapRequest."<getOpenInfo xmlns='http://www.XXX.cn'>";
    $SoapRequest = $SoapRequest."<arg0 xmlns=''>".$id."</arg0>";
    $SoapRequest = $SoapRequest."</getOpenInfo>";
    $SoapRequest = $SoapRequest."</soap:Body>";       
    $SoapRequest = $SoapRequest."</soap:Envelope>"; $xmlhttp->Open("POST",$url,false ,$username,$password);
    $xmlhttp->setRequestHeader("Content-Type", "text/xml;charset=utf-8");
    $xmlhttp->setRequestHeader("HOST", "www.XXX.cn");
    $xmlhttp->setRequestHeader("Content-Length",strlen($SoapRequest)); 
    $xmlhttp->setRequestHeader("SOAPAction", "http://www.XXX.cn");
    $xmlhttp->Send ($SoapRequest); $result = $xmlhttp->responseText;
    $xmlhttp = null; return $result;
    }
      

  3.   

    不过还是非常感谢楼上这位大哥的回复。。thank you  80分奉上。