2012-04-24 9 views
2

:ここPHPのSOAPリクエストない権利

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
    <CheckSomething xmlns="http://service.mydomain.com/"> 
     <User> 
     <username>user123</username> 
     <password>geheim</password> 
     </User> 
     <ItemXY>something</ItemXY> 
    </CheckSomething> 
    </soap:Body> 
</soap:Envelope> 

は私のPHPコードが

ある
$soapClient = new SoapClient("http://service.mydomain.com/Services.asmx?wsdl",array("trace" => 1)); 
$Param = array (
    'username' => "user123", 
    'password' => "geheim" 
); 
$info = $soapClient->__call("CheckSomething", array("User" => $Param,"ItemXY" => "something")); 
echo "Request :\n".htmlspecialchars($soapClient->__getLastRequest()) ."\n"; 

結果は次のとおりです。

<?xml version="1.0" encoding="UTF-8"?> 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://service.mydomain.com/"> 
<SOAP-ENV:Body> 
<ns1:CheckSomething/> 
<param1>something</param1> 
</SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

これは、WSDLでありますこのサービスのセクション:

<s:element name="CheckSomething"> 
    <s:complexType> 
    <s:sequence> 
     <s:element minOccurs="0" maxOccurs="1" name="User" type="tns:Validation"/> 
     <s:element minOccurs="0" maxOccurs="1" name="ItemXY" type="s:string"/> 
    </s:sequence> 
    </s:complexType> 
</s:element> 

誰でも正しいSOAPリクエストを作成する手助けができますか?

結果でns1を削除するには、正しいArray UserとItemXYにタグを付けますか?それが動作

$soapClient = new SoapClient("http://service.mydomain.com/Services.asmx?wsdl",array("trace" => 1)); 
$user_param = array (
    'username' => "user123", 
    'password' => "geheim" 
); 
$service_param = array (
    'User' => $user_param, 
    "ItemXY" => "something" 
); 

$info = $soapClient->__call("CheckSomething", array($service_param)); 
echo "Request :\n".htmlspecialchars($soapClient->__getLastRequest()) ."\n"; 

:私はPHPコードを変更した後

+0

あなたのwsdlファイルを変更するためにneddのように見えます –

+0

私はwsdlファイルにアクセスできません。このファイルは顧客 – kockiren

+0

から来ていますので、リクエストは実行されませんか? soapクライアントは、SoapClientと定義済みのWSDLファイルで正常に動作します。 –

答えて

5

+0

この応答に感謝します。読者のために:ときには配列の引数の配列をラップするだけで十分です。 –