简体   繁体   中英

SOAP: HTTP Bad Request

My website is on windows azure web-app. I am using below SOAP message.

$soap_client = new SoapClient("http://ip_address/service.asmx?WSDL", array("trace" => true));

$params = new \SoapVar('<?xml version="1.0" encoding="utf-8"?>
                <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
                <soap:Body>
                    <Beneficiary_Address1 xmlns="" />
                    <Beneficiary_Address2 xmlns="" />
                    <Beneficiary_Address3 xmlns="" />
                    <Beneficiary_ZIP_Code xsi:nil="true" xmlns="" />
                    <Beneficiary_EmailID xsi:nil="true" xmlns="" />
                    <Beneficiary_Contact_No xmlns="" />
                </soap:Body>
                </soap:Envelope>', XSD_ANYXML);

try{
    $response = $soap_client->__soapCall('RemittanceService', array($params));
    highlight_string($soap_client->__getLastRequest());
}
catch(SoapFault $fault){
    die("SOAP Fault: fault code: {$fault->faultcode}, fault string: {$fault->faultstring}");
}

And it's giving me this fault message :

fault code: HTTP, fault string: Bad Request

I don't know what does it mean? Let me know if you need more information. Thanks.

Stack Trace

SoapFault exception: [HTTP] Bad Request in /var/www/mtes/public_html/application/controllers/bank_api_pnb.php:146
Stack trace:
#0 [internal function]: SoapClient->__doRequest('<?xml version="...', 'http://124.124....', 'http://tempuri....', 1, 0)
#1 /var/www/mtes/public_html/application/controllers/bank_api_pnb.php(146): SoapClient->__soapCall('RemittanceServi...', Array)
#2 [internal function]: Bank_api_pnb->test()
#3 /var/www/mtes/public_html/system/core/CodeIgniter.php(359): call_user_func_array(Array, Array)
#4 /var/www/mtes/public_html/index.php(220): require_once('/var/www/mtes/p...')
#5 {main}

The path '/var/www/mtes/...' is not valid, it is the web root on Linux. Web root on Azure Apps is wwwroot, when you migrate to Azure Apps, you may need to change configuration, and application settings to point to correct web root. If you have hard coded paths, you need to change them in code as well.

SoapFault is a PHP class, http://php.net/manual/en/soapfault.soapfault.php , the object $fault must have $faultcode and $faultstring when created, $faultactor, $detail , $faultname, and $headerfault are optional, default to empty.

What you see from exception, $faultcode is "soap:Server", $faultstring is "An exception is thrown by the Orchestration schedule".

For debugging, you can add var_dump($fault) in catch statement, it could provide you more info, such as $faultactor, $detail , $faultname, and $headerfault.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM