__soapCall - 如何拨打正确的电话?

问题描述 投票:0回答:1

我对 PHP 的 WS 调用不熟悉。谁能告诉我如何从这个 WS 读取数据。

这是我的代码

$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);

我得到了 致命错误:未捕获的 SoapFault 异常:[客户端] SOAP-ERROR:编码:对象没有“请求”属性

如何才能正常调用?

php soap
1个回答
0
投票

我现在得到了更多信息,但无论如何我都无法让它发挥作用。我刚刚明白了

Request = soapenv:Server.generalException 

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(); 
}
© www.soinside.com 2019 - 2024. All rights reserved.