3
使用SoapClient的遠程功能
我使用SoapClient的訪問Pubmatic的遙控功能:getPublisherAdTagReport() WSDL幸福: 「http://beta-api.pubmatic.com/v1/PublisherDemandInsightsService?wsdl」在調用PHP
的代碼是這樣:
$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;
}
和函數getPublisherAdTagReport()按照$ SoapClient的 - > __ getFunctions()是這樣的:
[2] => getPublisherAdTagReportResponse getPublisherAdTagReport(getPublisherAdTagReport $parameters)