Ваши переменные кажутся испорченными: -
Dim videoYoutube : videoYoutube = "http://www.youtube.com/watch?v=d8nxjUlbKJA"
videoYoutube = Replace(videoYoutube,"http://www.youtube.com/watch?v=","")
videoYoutube = "http://gdata.youtube.com/feeds/api/videos/" & videoYoutube
Dim xhr: Set xhr= Server.CreateObject("MSXML2.ServerXMLHTTP.3.0")
xhr.Open "GET", videoYoutube, False
Я подозреваю, что вы действительно намеревались: -
Dim originalUrl: originalUrl= "http://www.youtube.com/watch?v=d8nxjUlbKJA"
Dim feedUrl : feedUrl = Replace(originalUrl, "http://www.youtube.com/watch?v=", "")
feedUrl = "http://gdata.youtube.com/feeds/api/videos/" & feedUrl
Dim xhr: Set xhr= Server.CreateObject("MSXML2.ServerXMLHTTP.3.0")
xhr.Open "GET", feedUrl, False
Ключ здесь naming . Назовите ваши переменные хорошо, и ошибки легче увидеть.
Однако, сказав, что получающийся URL "http://gdata.youtube.com/feeds/api/videos/d8nxjUlbKJA" возвращает 404.
(Кстати, все это кажется очень знакомым, я уже имел дело с этим раньше где-нибудь на SO?)
Редактировать
Истинная проблема с этим конкретным фидом заключается в том, что заголовок Content-Type определяет содержимое: «application / atom + xml». К сожалению, старый объект MSXML3 ServerXMLHTTP не распознает этот тип контента как XML и поэтому не заполняет объект ResponseXML.
У вас есть два варианта, во-первых, если у вас есть контроль над сервером или вы знаете, что установлен MSXML6, вы можете использовать это. Измените ProgID в CreateObject на «MSXML2.ServerXMLHTTP.6.0» (вы также можете удалить параметр SelectionLanguage, так как XPATH по умолчанию в MSXML6).
Другой вариант - загрузить ResponseStream
в экземпляр DOM самостоятельно: -
Вместо: -
Dim xml : Set xml = xhr.ResponseXML
использование: -
Dim xml : Set xml = CreateObject("MSXML2.DOMDocument.3.0")
xml.Load xhr.ResponseStream