请求SOAP调用后我收到错误.
fault code: HTTP,fault string: Bad Request
这个形式很差的信息吗?
try{ $client = new SoapClient("http://ip_add/something.asmx?WSDL",array("trace" => true,'exceptions' => 1)); $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> <RemittanceService xmlns="http://tempuri.org/"> <CreditTxnMessage xmlns="http://my_url"> <Corporate_UID xmlns="">66666</Corporate_UID> <Mandate_Type xmlns="">P</Mandate_Type> <MICR_No xsi:nil="true" xmlns="" /> <Instrument_No xsi:nil="true" xmlns="" /> <Remitter_Address1 xmlns="">285 enfiled pl</Remitter_Address1> <Remitter_Address2 xmlns="">mississauga</Remitter_Address2> <Remitter_Address3 xmlns="">16y2n4</Remitter_Address3> <Remitter_Country xmlns="">Canada</Remitter_Country> <Remitter_ZIP_Code xsi:nil="true" xmlns="" /> <Remitter_EmailID xsi:nil="true" xmlns="" /> <Remitter_Contact_No xmlns="" /> <Beneficiary_ZIP_Code xsi:nil="true" xmlns="" /> <Beneficiary_EmailID xsi:nil="true" xmlns="" /> <Beneficiary_Contact_No xmlns="" /> <Beneficiary_Bank_Name xmlns="">PNB</Beneficiary_Bank_Name> </CreditTxnMessage> </RemittanceService> </soap:Body> </soap:Envelope>',XSD_ANYXML); $result = $client->__soapCall('RemittanceService',array($params)); highlight_string($client->__getLastRequest()); } catch(SoapFault $fault){ die("SOAP Fault:<br />fault code: {$fault->faultcode},fault string: {$fault->faultstring}"); }
我不知道这里有什么问题
堆栈跟踪
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}
SoapClient的全部要点是将调用转换为xml;所以你不应该手动这样做.改为:
try { $client = new SoapClient("http://ip_add/something.asmx?WSDL",'exceptions' => 1)); $result = $client->RemittanceService(array( 'CreditTxnMessage' => array( 'Corporate_UID' => 66666,'Mandate_Type' => 'P','MICR_No' => null,/* you get the idea */ 'Beneficiary_Contact_No' => '','Beneficiary_Bank_Name' => 'PNB' ) )); highlight_string($client->__getLastRequest()); } catch(SoapFault $fault){ die("SOAP Fault:<br />fault code: {$fault->faultcode},fault string: {$fault->faultstring}"); }
参数及其名称的确切格式将在WSDL中指定.