|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2010-05-05 22:07 UTC] degeberg@php.net
-Status: Open
+Status: Bogus
[2010-05-05 22:07 UTC] degeberg@php.net
[2010-05-05 22:12 UTC] danbrown@php.net
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Oct 25 15:00:01 2025 UTC |
Description: ------------ I'm developing a Web Service using the SOAP class with WSDL mode on. I'm having problems when I need to add Headers to the Soap Fault response, and looked examples everywhere, but I haven't found them. As documentation says, the sixth parameter of the SoapFault constructor is the one that should do this, but although I did so, no headers have been added to my SoapFault response. I add the code below, as well as an example of my Request/Response. <?php /** * class Transaction * * @param $TransactionId = string */ class Transaction { public $TransactionId; function __construct($Transaction){ $this->TransactionId = $Transaction; } } /** * class soapdetail * Class to create a Fault Detail * @param $ID = string. Error Number. * @param $Description = string. Short description about occurred error. */ class soapdetail { public $ID; public $Description; function __construct($codigo, $detalle){ $this->ID = $codigo; $this->Description = $detalle; } } class WSSuscripciones { /** * method consulta * * @param object $NumeroLinea * */ public function consulta($NumeroLinea) { if (!$this->authenticated) { $soap = new soapdetail("2","Las credenciales no estan autorizadas para realizar esta consulta."); $transaction = new Transaction($this->TransactionId); $authvalues = new SoapVar($transaction, SOAP_ENC_OBJECT); $header = new SoapHeader('My WSDL URL', 'Transaction', $authvalues); throw new SOAPFault("soap:Server", "Las credenciales no estan autorizadas para realizar esta consulta.", "My WSDL URL", $soap, "Transaction", $header); } else { //do something } } ?> Expected result: ---------------- Response: <?xml version="1.0" encoding="UTF-8"?> <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <env:Header> <ns2:Transaction> <TransactionId>5553</TransactionId> </ns2:Transaction> </env:Header> <env:Body> <env:Fault> <env:Code> <env:Value>soap:Server</env:Value> </env:Code> <env:Reason> <env:Text>Las credenciales no estan autorizadas para realizar esta consulta.</env:Text> </env:Reason> <env:Detail> <ID>2</ID> <Description>Las credenciales no estan autorizadas para realizar esta consulta.</Description> </env:Detail> </env:Fault> </env:Body> </env:Envelope> Actual result: -------------- Request: <?xml version="1.0" encoding="UTF-8"?> <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://tempuri.org/" xmlns:ns2="My WSDL URL"> <env:Header> <ns2:Transaction> <TransactionId>5553</TransactionId> </ns2:Transaction> <ns2:Authentication> <UserName>telecom</UserName> <Password>WSuscr1pc10n3sd</Password> </ns2:Authentication> </env:Header> <env:Body> <ns1:consulta> <ns1:NumeroLinea>1111111111</ns1:NumeroLinea> </ns1:consulta> </env:Body> </env:Envelope> Response: <?xml version="1.0" encoding="UTF-8"?> <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body> <env:Fault> <env:Code> <env:Value>soap:Server</env:Value> </env:Code> <env:Reason> <env:Text>Las credenciales no estan autorizadas para realizar esta consulta.</env:Text> </env:Reason> <env:Detail> <ID>2</ID> <Description>Las credenciales no estan autorizadas para realizar esta consulta.</Description> </env:Detail> </env:Fault> </env:Body> </env:Envelope>