Формирование запросов мыла DoubleClick for Publishers без библиотеки в PHP

Я застрял в разработке в среде, где я не могу использовать библиотеку PHP DFP. Я использую PHP SoapClient, и у меня возникают проблемы при правильном формировании заголовков для запросов SOAP. Вот пример:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope
        xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Header>
    <ns1:RequestHeader 
         soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next"
         soapenv:mustUnderstand="0"
         xmlns:ns1="https://www.google.com/apis/ads/publisher/v201308">
      <ns1:authentication xsi:type="ns1:ClientLogin"  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
         <ns1:token>SuchALongToken</ns1:token>
      </ns1:authentication>
      <ns1:networkCode>123456</ns1:networkCode>
      <ns1:applicationName>DfpApi-Java-2.1.0-dfp_test</ns1:applicationName>
    </ns1:RequestHeader>
  </soapenv:Header>
  <soapenv:Body>
    <getAdUnitsByStatement xmlns="https://www.google.com/apis/ads/publisher/v201308">
      <filterStatement>
        <query>WHERE parentId IS NULL LIMIT 500</query>
      </filterStatement>
    </getAdUnitsByStatement>
  </soapenv:Body>
</soapenv:Envelope>

Это раздел аутентификации, который получает меня. Не уверен, как установить внутренние параметры (type и xsd) и создать дочерний элемент 'token'.

    $header_params = new stdClass();
    $header_params->networkCode = self::$network_code;
    $header_params->applicationName = $app_name;
    $header_params->authentication = array('token' => $this->auth_token);
    $headers = new SoapHeader(self::getNamespace(), 'RequestHeader', $header_params);

Это дает мне следующее:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"  xmlns:ns1="https://www.google.com/apis/ads/publisher/v201308">
   <SOAP-ENV:Header>
      <ns1:RequestHeader>
         <ns1:networkCode>########</ns1:networkCode>
         <ns1:applicationName>Get Companies By Filter</ns1:applicationName>
         <ns1:authentication />
      </ns1:RequestHeader>
   </SOAP-ENV:Header>
   <SOAP-ENV:Body>
      <ns1:getCompaniesByStatement>
         <ns1:filterStatement />
      </ns1:getCompaniesByStatement>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Похоже, что wsdl отклоняет мою аутентификацию, а также мой filterStatement. Я был бы счастлив, чтобы аутентификация работала в данный момент. Этот запрос дает мне ошибку "Unmarshalling".

Любая помощь приветствуется!

0 ответов

Другие вопросы по тегам