Разница между двумя запросами на мыло

Мой запрос SOAP

<?xml version="1.0" encoding="UTF-8"?> <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://ws.dgpys.deloitte.com" xmlns:ns2="ws.apache.org/namespaces/axis2"> <env:Header> <ns2:ServiceGroupId> <BOGUS>urn:uuid:7C2F61BDE7CB9D9C6D1424938568724</BOGUS> </ns2:ServiceGroupId> </env:Header> <env:Body> <ns1:getGunlukParametreRapor> <date>2015-02-22T00:00Z</date> </ns1:getGunlukParametreRapor> </env:Body> </env:Envelope> 

Ожидаемый запрос SOAP

 <?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ws="http://ws.dgpys.deloitte.com"> <soap:Header> <axis2:ServiceGroupId xmlns:axis2="http://ws.apache.org/namespaces/axis2">urn:uuid:479731898147E116AD1424691518968</axis2:ServiceGroupId> </soap:Header> <soap:Body> <ws:getGunlukParametreRapor> <date>2015-02-22T00:00Z</date> </ws:getGunlukParametreRapor> </soap:Body> </soap:Envelope> 

Пробовал со следующими кодами:

 $options = array( 'trace' => 1, 'exceptions' => 1, 'soap_version' => SOAP_1_2 ); $client = new SoapClient("http://dgpysws.pmum.gov.tr/dgpys/services/EVDServis.wsdl", $options); $p1 = new stdCLass(); $p1->loginMessage = new stdCLass(); $p1->loginMessage->UserName = new stdCLass(); $p1->loginMessage->UserName->v = "Username"; $p1->loginMessage->Password = new stdCLass(); $p1->loginMessage->Password->v = "Passwor"; $client->login($p1); $headers[] = new SoapHeader('http//ws.apache.org/namespaces/axis2', 'ServiceGroupId', "UNIQUEID", false); $client->__setSoapHeaders($headers); $result = $client->getGunlukParametreRapor(array('date' => '2015-02-22T00:00Z')); 

Вопрос:

  1. Эти запросы SOAP одинаковы?

Я использую SOAP_1_2 и это должно быть похоже на Expected SOAP Request но мой запрос не похож на ожидаемый формат. Отсутствует где?

  1. Как я могу получить результат, как и ожидалось?

Примечание: адрес dgpysws.pmum.gov.tr ​​wsdl является частной.

Они не одинаковы. Чтобы избавиться от узла BOGUS, вам необходимо использовать это:

 $strHeaderComponent_Session = "<SessionHeader><ServiceGroupId>$theVarWithTheIDGoesHere</ServiceGroupId></SessionHeader>"; $objVar_Session_Inside = new SoapVar($strHeaderComponent_Session, XSD_ANYXML, null, null, null); $objHeader_Session_Outside = new SoapHeader('http//ws.apache.org/namespaces/axis2', 'SessionHeader', $objVar_Session_Inside); // More than one header can be provided in this array. $client->__setSoapHeaders(array($objHeader_Session_Outside)); 

попробуйте следующее

 $ns = 'http//ws.apache.org/namespaces/axis2'; //Namespace of the WS. //Body of the Soap Header. $headerbody = array('ServiceGroupId' => $UNIQUEID_Token); //Create Soap Header. $header = new SOAPHeader($ns, 'axis2', $headerbody); //set the Headers of Soap Client. $soap_client->__setSoapHeaders($header); 
 <?xml version="1.0" encoding="UTF-8"?> <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://ws.dgpys.deloitte.com" xmlns:ns2="ws.apache.org/namespaces/axis2"> <env:Header> <ns2:ServiceGroupId> urn:uuid:7C2F61BDE7CB9D9C6D1424938568724 </ns2:ServiceGroupId> </env:Header> <env:Body> <ns1:getGunlukParametreRapor> <date>2015-02-22T00:00Z</date> </ns1:getGunlukParametreRapor> </env:Body> </env:Envelope> 

А также

 <?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ws="http://ws.dgpys.deloitte.com"> <soap:Header> <axis2:ServiceGroupId xmlns:axis2="http://ws.apache.org/namespaces/axis2">urn:uuid:479731898147E116AD1424691518968</axis2:ServiceGroupId> </soap:Header> <soap:Body> <ws:getGunlukParametreRapor> <date>2015-02-22T00:00Z</date> </ws:getGunlukParametreRapor> </soap:Body> </soap:Envelope> 

Одинаковы. env = soap, ns2 = ws и ns2 = axis2. У вас может быть любой префикс, чтобы ссылаться на эти пространства имен по своему усмотрению. Как только вы назначаете префикс, вы просто ссылаетесь на него, используя это в других местах. Единственным отличием был первый запрос фиктивного тега. Просто удалите это.