2013-12-09 91 views
1

我已經寫在PHP和使用該WSDLPHP __soapCall PARMS

<?xml version="1.0" encoding="utf-8" ?> 
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://myserver.net" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="myService" targetNamespace="http://myserver.net"> 
    <wsdl:types> 
    <xsd:element name="getArticleStockInput"> 
     <xsd:complexType> 
     <xsd:sequence> 
      <xsd:element minOccurs="1" maxOccurs="1" name="articleid" type="xsd:string"></xsd:element> 
     </xsd:sequence> 
     </xsd:complexType> 
    </xsd:element> 
    <xsd:element name="getArticleStockOutput"> 
     <xsd:complexType> 
     <xsd:sequence> 
      <xsd:element name="stock" type="xsd:float"></xsd:element> 
     </xsd:sequence> 
     </xsd:complexType> 
    </xsd:element> 
    </wsdl:types> 
    <wsdl:message name="getArticleStockRequest"> 
    <wsdl:part element="tns:getArticleStockInput" name="parameters"/> 
    </wsdl:message> 
    <wsdl:message name="getArticleStockResponse"> 
    <wsdl:part element="tns:getArticleStockOutput" name="parameters"/> 
    </wsdl:message> 
    <wsdl:portType name="myServiceSoap"> 
    <wsdl:operation name="getArticleStock"> 
     <wsdl:input message="tns:getArticleStockRequest"/> 
     <wsdl:output message="tns:getArticleStockResponse"/> 
    </wsdl:operation> 
    </wsdl:portType> 
    <wsdl:binding name="myServiceSoapHttpBinding" type="tns:myServiceSoap"> 
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> 
    <wsdl:operation name="getArticleStock"> 
     <soap:operation soapAction="http://myserver.net/getArticleStock"/> 
     <wsdl:input> 
     <soap:body use="literal"/> 
     </wsdl:input> 
     <wsdl:output> 
     <soap:body use="literal"/> 
     </wsdl:output> 
    </wsdl:operation> 
    </wsdl:binding> 
    <wsdl:service name="ShopService"> 
    <wsdl:port binding="tns:myServiceSoapHttpBinding" name="ShopServiceSOAP11prt_HTTP"> 
     <soap:address location="http://myserver.net/ws.php5"/> 
    </wsdl:port> 
    </wsdl:service> 
</wsdl:definitions> 

現在,我不知道如何調用一個WS-函數在PHP SoapServer的。 我應該這樣做嗎 這兩種可能性有什麼區別? 我知道,我以不同的方式接收服務器中的參數,但有什麼區別?

ini_set("soap.wsdl_cache_enabled", "0"); 
$url="http://myserver.net/wsdl.wsdl"; 
$client3 = new SoapClient($url); 

$parray = array("articleid" => "150");   
$result = $client3->__soapCall("getArticleStock", array("getArticleStockInput"=>$parray)); 

或類似這樣的

ini_set("soap.wsdl_cache_enabled", "0"); 
$url="http://myserver.net/wsdl.wsdl"; 
$client3 = new SoapClient($url); 

$parray = array("articleid" => "150");   
$result = $client3->__soapCall("getArticleStock", $parray); 

什麼是使用正確的方式?

再見

回答

0

這PHP代碼片段已經從__soapCall功能,其顯示功能的正確用法的PHP手冊採取:

<?php 
$client = new SoapClient("some.wsdl"); 
$client->SomeFunction($a, $b, $c); 

$client->__soapCall("SomeFunction", array($a, $b, $c)); 
$client->__soapCall("SomeFunction", array($a, $b, $c), NULL, new SoapHeader(), $output_headers); 

$client = new SoapClient(null, array('location' => "http://localhost/soap.php", 'uri' => "http://test-uri/")); 
$client->SomeFunction($a, $b, $c); 
$client->__soapCall("SomeFunction", array($a, $b, $c)); 
$client->__soapCall("SomeFunction", array($a, $b, $c), array('soapaction' => 'some_action', 'uri' => 'some_uri')); 
?> 
+0

感謝這麼遠,但我讀這始終。我認爲這取決於wsdl文件和可能的複雜類型。 – user1121575

相關問題