Итак, вот проблема, над которой я ломаю голову последние несколько дней:
У меня есть приложение nodeJS, которое делает следующее:
var VAST = require('vast-xml');
var vast = new VAST();
vast.version = "2.0";
var ad=vast.attachAd({
id : 1
, structure : 'wrapper'
, sequence : 99
, Error: 'http://error.err'
, VASTAdTagURI : 'http://demo.tremormedia.com/proddev/vast/vast_inline_linear.xml'
, AdTitle : 'Common name of the ad'
, AdSystem : { name: 'Test Ad Server', version : '1.0' }
});
response.setHeader('Content-Length', Buffer.byteLength(vast.xml()));
response.setHeader('Connection', 'close');
response.writeHead( 200, {'content-type': 'text/xml; charset=UTF-8'} );
response.end(vast.xml());
Вот URL-адрес, который вызывает приведенный выше код: http://tag.sprtad.com/?ttj=4 Возвращаемый XML:
<VAST version="2.0">
<Ad id="1" sequence="99">
<Wrapper>
<AdSystem version="1.0">Test Ad Server</AdSystem>
<VASTAdTagURI>
<![CDATA[http://demo.tremormedia.com/proddev/vast/vast_inline_linear.xml ]]>
</VASTAdTagURI>
<Error>
<![CDATA[http://error.err ]]>
</Error>
<Creatives />
</Wrapper>
</Ad>
</VAST>
Вот файл, который возвращает точно такой же XML: http://serve.sprtad.com/test.xml
Вот проблема:
Я использую этот VAST-Validator, чтобы убедиться, что XML действителен: https://developers.google.com/interactive-media-ads/docs/vastspector_dual
Просто вставьте первый или второй URL-адрес в текстовое поле тега VAST и нажмите кнопку «Проверить объявление».
Под видеоплеером есть консоль журнала. В журнале вы сможете увидеть, что для первой ссылки она возвращает ошибку, а для второй ссылки все работает нормально!
Я не могу точно определить, в чем разница между динамическим обслуживанием XML и обслуживанием файла XML.