2013-01-06 4 views
1

PHP에서 WS 호출을 처음 사용했습니다. 누구든지이 WS에서 데이터를 읽는 방법을 알려줄 수 있습니까? catch되지 않은 SOAPFault의 예외 : [클라이언트] SOAP-ERROR : 인코딩 : 객체__soapCall - 제대로 전화를 걸려면 어떻게해야합니까?

가 어떻게이없는 '요청'속성 여기

$wsdl = "https://test.saljfinans.handelsbanken.se/xml/netxservice.wsdl"; 

$username  = 'user'; 
$password  = 'password'; 
$contractNumber = XXXXXX; 
$orderNumber = '7871'; 
$call = array("contractNumber" => $contractNumber, "orderNumber" => $orderNumber); 


$client = new SoapClient($wsdl, array('cache_wsdl' => WSDL_CACHE_NONE, 'trace' => 1)); 
//var_dump($client->__getFunctions()); 
//var_dump($client->__getTypes()); 



$name = 'namespace'; 
$text = ''; 
$text .= '<authHeaderRequest><credentials><username>'.$username.'</username><password>'.$password.'</password></credentials></authHeaderRequest>'; 
$var = new SoapVar($text, XSD_ANYXML, null, null, null); 
$header = new SoapHeader($name, 'authHeaderRequest', $var); 
$client->__setSoapHeaders($header); 

$response = $client->__soapCall("getInvoiceOrder", array("getInvoiceOrderRequest_t" => $call), null, $header); 

내가 치명적인 오류를 받고 있어요 내 코드입니다 나는 그것이 작동하도록 전화를합니까?

답변

0

나는 이제 더 많은 정보를 얻었지만 어쨌든 작동하지 않습니다. 난 그냥

요청 = soapenv를 얻을 :

class getInvoiceOrder { 
    public $request; 
} 

class getInvoiceOrderRequest_t { 
    public $contractNumber; 
    public $orderNumber; 
} 



ini_set("soap.wsdl_cache_enabled", 0); 
$wsdl = "https://test.saljfinans.handelsbanken.se/xml/netxservice.wsdl"; 

$username  = 'user'; 
$password  = 'password'; 
$contractNumber = 550158; 
$orderNumber = '7871'; 

$params = new getInvoiceOrder(); 
$params->request = new getInvoiceOrderRequest_t; 
$params->request->orderNumber = $orderNumber; 
$params->request->contractNumber = $contractNumber; 
$param[] = $params; 


$client = new SoapClient($wsdl, array('cache_wsdl' => WSDL_CACHE_NONE, 'trace' => 1)); 


$name = 'namespace'; 
$text = ''; 
$text .= '<authHeaderRequest><credentials><username>'.$username.'</username><password>'.$password.'</password></credentials></authHeaderRequest>'; 
$var = new SoapVar($text, XSD_ANYXML, null, null, null); 
$header = new SoapHeader($name, 'authHeaderRequest', $var); 
try { 
    $client->__setSoapHeaders($header); 
} catch(SoapFault $client) { 
    printf("<br/> Request = %s </br>", htmlspecialchars($client->faultcode)); 
    print $client->getMessage(); 
    print $client->getTraceAsString(); 
} 


try { 
    $response = $client->__soapCall("getInvoiceOrder", $param, null, $header); 
} catch(SoapFault $client) { 
    printf("<br/> Request = %s </br>", htmlspecialchars($client->faultcode)); 
    print $client->getMessage(); 
    print $client->getTraceAsString(); 
} 
+0

당신이 그것을 작동하도록하기 위해 관리나요 Server.generalException? 내가 똑같은 문제를 겪고 있기 때문에 : / – Muqito

관련 문제