2015-11-12 45 views
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) 

回答

2

這是我在上面的問題,什麼工作:

// form an array listing the http header 
$httpHeaders = array(
    'http' => array(
     'protocol_version' => 1.1, 
     'header' => "Authorization:Bearer " . $access_token . "\r\n", 
    )); 
// form a stream context 
$context = stream_context_create($httpHeaders); 
// pass it in an array 
$params = array('stream_context' => $context); 
$client = new SoapClient("http://beta-api.pubmatic.com/v1/PublisherDemandInsightsService?wsdl", 
    $params); 
// access the remote method using the client object 
$result = $client->getPublisherAdTagReport(array('accessToken' => $access_token, 'publisherId' => $pubId, 
        'fromDate' => $startdate, 'toDate' => $enddate));