2016-11-17 25 views
2

SOAP UI XMLが動作していて、SOAPリクエストXMLがあり、ほとんど同じです。 SOAP UIが動作し、私の応答がnullになります。ここにSOAPUI XMLがあります。PHP soap xmlとSoapUI xmlとの比較

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:get="http://www.cornerstoneondemand.com/Webservices/GetDetailsWebService"> 
    <soapenv:Header> 
     <get:AuthHeader> 
     <get:CorpName>corp</get:CorpName> 
     <get:UserId>1234</get:UserId> 
     <get:Signature>ABC123</get:Signature> 
     </get:AuthHeader> 
    </soapenv:Header> 
    <soapenv:Body> 
     <get:GetDetails xmlns:get="http://www.cornerstoneondemand.com/Webservices/GetDetailsWebService"> 
     <get:object_id>qwerty-123</get:object_id> 
     </get:GetDetails> 
    </soapenv:Body> 
</soapenv:Envelope> 

ここに私のPHPコードとリクエストがあります。

$client=new SoapClient($wsdl,array('trace' => 1, 'exception' => 0)); 

$auth = array(
      'CorpName' => $CorpName, 
      'UserId' => $username, 
      'Signature' => $Signature 
    ); 
$header = new SoapHeader('http://www.cornerstoneondemand.com/Webservices/GetDetailsWebService','AuthHeader',$auth,false); 
$client->__setSoapHeaders($header); 

$parm[] = new SoapVar($LOid, XSD_STRING, null, null, 'object_id'); 


var_dump($client->GetDetails(new SoapVar($parm, SOAP_ENC_OBJECT))); //output is NULL 

//とPHP要求:

ますprint_r($クライアント - > __ getLastRequest()); 出力は、私は良い要求、またはマイルをオフ作成に近いんだ場合、私は言うことができない

<?xml version="1.0" encoding="UTF-8"?> 
     <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.cornerstoneondemand.com/Webservices/GetDetailsWebService"> 
      <SOAP-ENV:Header> 
       <ns1:AuthHeader> 
       <ns1:CorpName>corp</ns1:CorpName> 
       <ns1:UserId>1234</ns1:UserId> 
       <ns1:Signature>ABC123</ns1:Signature> 
       </ns1:AuthHeader> 
      </SOAP-ENV:Header> 
      <SOAP-ENV:Body> 
       <ns1:GetDetails> 
       <object_id>qwerty-123</object_id> 
       </ns1:GetDetails> 
      </SOAP-ENV:Body> 
     </SOAP-ENV:Envelope> 

です。私はそれが動作し、私のものではないので、PHPリクエストとSOAPUIの一致を確認するように努めています。

答えて

2

ほぼ同じ情報が含まれています。要素ノードの名前空間接頭辞は交換可能でオプションです。これらの3つのバリアントはすべて解決され、ローカルノード名Envelopeの要素ノードはhttp://schemas.xmlsoap.org/soap/envelope/に解決されます。あなたが{http://schemas.xmlsoap.org/soap/envelope/}:Envelopeとして要素名を読み取ることができ

  • <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"/>
  • <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/>
  • <Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"/>

getns1の名前空間接頭辞についても同じです。どちらも同じ実際の名前空間に解決されます。

要素object_idには、XMLに名前空間がありません。 SoapVarコンストラクタの6番目の引数はノードの名前空間なので、試してみるとよいでしょう:

$namespace = 'http://www.cornerstoneondemand.com/Webservices/GetDetailsWebService'; 
$parm[] = new SoapVar($LOid, XSD_STRING, null, null, 'object_id', $namespace); 
+0

あなたはそうです!私は名前空間を追加し、良い結果を得ました! – Mark