我正在使用SoapClient访问Pubmatic的远程函数:getPublisherAdTagReport()。wsdl是:http://beta-api.pubmatic.com/v1/PublisherDemandInsightsService?wsdl
代码如下:
$soapClient = new SoapClient("http://beta-api.pubmatic.com/v1/PublisherDemandInsightsService?wsdl");
// Prepare SoapHeader parameters
$head_param = array('Authorization'=>"Bearer ".$access_token);
$headers = new SoapHeader('http://beta-api.pubmatic.com/v1/PublisherDemandInsightsService?wsdl', 'UserCredentials', $head_param);
// Prepare Soap Client
$soapClient->__setSoapHeaders(array($headers));
try {
$info = $soapClient->getPublisherAdTagReport(new SoapParam($access_token,"accessToken"),new SoapParam($pubId,"publisherId"),new SoapParam("2015-10-01","fromDate"),new SoapParam("2015-10-30","toDate"));
print_r($info);
} catch (SoapFault $fault) {
print_r($fault);
}
异常返回的SoapFault对象如下所示:
SoapFault Object
(
[message:protected] => Apigee Internal Error
[string:Exception:private] =>
[code:protected] => 0
[file:protected] => /home/utkarsh/algoscale/soapTest.php
[line:protected] => 62
[trace:Exception:private] => Array
(
[0] => Array
(
[function] => __doRequest
[class] => SoapClient
[type] => ->
[args] => Array
(
[0] => <?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://webservices.reporting.core.pubmatic.com/" xmlns:ns2="http://beta-api.pubmatic.com/v1/PublisherDemandInsightsService?wsdl"><SOAP-ENV:Header><ns2:UserCredentials><item><key>Authorization</key><value>Bearer #######AccessToken######</value></item></ns2:UserCredentials></SOAP-ENV:Header><SOAP-ENV:Body><ns1:getPublisherAdTagReport/><publisherId>####3</publisherId><fromDate>2015-10-01</fromDate><toDate>2015-10-30</toDate></SOAP-ENV:Body></SOAP-ENV:Envelope>
[1] => http://beta-api.pubmatic.com/v1/PublisherDemandInsightsService
[2] =>
[3] => 1
[4] => 0
)
)
[1] => Array
(
[file] => /home/utkarsh/algoscale/soapTest.php
[line] => 62
[function] => __call
[class] => SoapClient
[type] => ->
[args] => Array
(
[0] => getPublisherAdTagReport
[1] => Array
(
[0] => SoapParam Object
(
[param_name] => accessToken
[param_data] => #######AccessToken######
)
[1] => SoapParam Object
(
[param_name] => publisherId
[param_data] => ####3
)
[2] => SoapParam Object
(
[param_name] => fromDate
[param_data] => 2015-10-01
)
[3] => SoapParam Object
(
[param_name] => toDate
[param_data] => 2015-10-30
)
)
)
)
[2] => Array
(
[file] => /home/utkarsh/algoscale/soapTest.php
[line] => 62
[function] => getPublisherAdTagReport
[class] => SoapClient
[type] => ->
[args] => Array
(
[0] => SoapParam Object
(
[param_name] => accessToken
[param_data] => #######AccessToken######
)
[1] => SoapParam Object
(
[param_name] => publisherId
[param_data] => ####3
)
[2] => SoapParam Object
(
[param_name] => fromDate
[param_data] => 2015-10-01
)
[3] => SoapParam Object
(
[param_name] => toDate
[param_data] => 2015-10-30
)
)
)
)
[previous:Exception:private] =>
[faultstring] => Apigee Internal Error
[faultcode] => HTTP
)
这是我使用以下代码获取到的结构体: $soapClient->__getTypes()
[8] => struct getPublisherAdTagReport {
string accessToken;
long publisherId;
string fromDate;
string toDate;
reportingOptionalParams reportingOptionalParams;
}
根据$soapClient->__getFunctions(),函数getPublisherAdTagReport()的代码如下:
[2] => getPublisherAdTagReportResponse getPublisherAdTagReport(getPublisherAdTagReport $parameters)