2017-07-26 30 views
-1

我不能連接到web服務和發送/接收數據PHP SoapClient無法處理消息,因爲內容類型爲'text/xml;

錯誤

HTTP,無法處理該消息,因爲該內容類型「文本/ XML; charset = utf-8'不是預期的類型'application/soap + xml; charset = utf-8'。

代碼

 

    $parameters = [ 
     'UserName' => 12324, 
     'Password' => 432123, 
     'Bill_Id' => 153585611140, 
     'Payment_Id' => 8560103, 
    ]; 

    $url="https://bill.samanepay.com/CheckBill/BillStateService.svc?wsdl"; 
    $method = "VerifyBillPaymentWithAddData"; 

    $client = new SoapClient($url); 

    try{ 

     $info = $client->__call($method, array($parameters)); 

    }catch (SoapFault $fault){ 

     die($fault->faultcode.','.$fault->faultstring); 

    } 

Notice:不行肥皂版本1,1和其他樣本的決心爲這個錯誤計算器。

回答

1

你可以嘗試

$url = "https://bill.samanepay.com/CheckBill/BillStateService.svc?wsdl"; 

try { 
    $client = new SoapClient($url, [ 
     "soap_version" => SOAP_1_2, // SOAP_1_1 
     'cache_wsdl' => WSDL_CACHE_NONE, // WSDL_CACHE_MEMORY 
     'trace' => 1, 
     'exception' => 1, 
     'keep_alive' => false, 
     'connection_timeout' => 500000 
    ]); 
    print_r($client->__getFunctions()); 
} catch (SOAPFault $f) { 
    error_log('ERROR => '.$f); 
} 

來驗證你的方法名是正確的。

在那裏,你可以看到該方法

VerifyBillPaymentWithAddDataResponse VerifyBillPaymentWithAddData(VerifyBillPaymentWithAddData $parameters) 

接下來是檢查類型VerifyBillPaymentWithAddData,如果該參數可以是一個數組。 您也可以測試通過

$client->VerifyBillPaymentWithAddData([ 
    'UserName' => 12324, 
    'Password' => 432123, 
    'Bill_Id' => 153585611140, 
    'Payment_Id' => 8560103, 
]); 

或你要調用的方法以外的其它陣列

$info = $client->__call($method, $parameters); 

編輯: 假設到https://stackoverflow.com/a/5409465/1152471誤差可能是在服務器端,這是因爲服務器發送一個標題返回,與SOAP 1.2標準不兼容。

也許你必須使用第三方庫或甚至簡單的套接字才能使它工作。

相關問題