2009-10-13 7 views
1

En utilisant le code suivant:problème Youtube XML ASP classique

<% 


    Option Explicit 
    Response.Buffer = True 

    Dim videoVimeo : videoVimeo = "http://vimeo.com/5866977" 

    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 

    xhr.Send 

    If xhr.Status = 200 Then 
     Dim xml : Set xml = xhr.ResponseXML 
     xml.SetProperty "SelectionLanguage", "XPath" 
     Dim ns : ns = "xmlns:a='http://www.w3.org/2005/Atom' " 
     ns = ns & "xmlns:gd='http://schemas.google.com/g/2005' " 
     xml.SetProperty "SelectionNamespaces", ns 

     Dim entry : Set entry = xml.DocumentElement 

     Dim title : title = entry.SelectSingleNode("a:title").Text 
     Dim published : published = entry.SelectSingleNode("a:published") 
     Dim rating : rating = entry.SelectSingleNode("gd:rating").GetAttribute("average") 

    End If 

%> 

Je reçois l'erreur suivante:

Erreur d'exécution Microsoft VBScript 'de 800a01a8'

Objet requis

/Romans/admin_youtube_detail.asp, ligne 31

Qui est: Dim ti tle: title = entry.SelectSingleNode ("a: title"). Texte

Quelqu'un peut-il vous aider s'il vous plaît?

XML Feed:

<?xml version='1.0' encoding='UTF-8'?> 
<entry xmlns='http://www.w3.org/2005/Atom' xmlns:media='http://search.yahoo.com/mrss/' xmlns:gd='http://schemas.google.com/g/2005' xmlns:yt='http://gdata.youtube.com/schemas/2007'> 
    <id>http://gdata.youtube.com/feeds/api/videos/d8nxjUlbKJA</id> 
    <published>2009-08-01T00:07:02.000Z</published> 
    <updated>2009-08-31T22:21:46.000Z</updated> 
    <category scheme='http://schemas.google.com/g/2005#kind' term='http://gdata.youtube.com/schemas/2007#video'/> 
    <category scheme='http://gdata.youtube.com/schemas/2007/categories.cat' term='Education' label='Education'/> 
    <category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='ToditoFree'/> 
    <category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='freebies'/> 
    <category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='gelattina'/> 
    <category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='gelattinatv'/> 
    <category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='free'/> 
    <category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='stuff'/> 
    <title type='text'>ToditoFree: Gratis!!</title> 
    <content type='text'/> 
    <link rel='alternate' type='text/html' href='http://www.youtube.com/watch?v=d8nxjUlbKJA&amp;feature=youtube_gdata'/> 
    <link rel='http://gdata.youtube.com/schemas/2007#video.responses' type='application/atom+xml' href='http://gdata.youtube.com/feeds/api/videos/d8nxjUlbKJA/responses'/> 
    <link rel='http://gdata.youtube.com/schemas/2007#video.related' type='application/atom+xml' href='http://gdata.youtube.com/feeds/api/videos/d8nxjUlbKJA/related'/> 
    <link rel='http://gdata.youtube.com/schemas/2007#mobile' type='text/html' href='http://m.youtube.com/details?v=d8nxjUlbKJA'/> 
    <link rel='self' type='application/atom+xml' href='http://gdata.youtube.com/feeds/api/videos/d8nxjUlbKJA'/> 
    <author> 
    <name>gelattinatv</name> 
    <uri>http://gdata.youtube.com/feeds/api/users/gelattinatv</uri> 
    </author> 
    <gd:comments> 
    <gd:feedLink href='http://gdata.youtube.com/feeds/api/videos/d8nxjUlbKJA/comments' countHint='0'/> 
    </gd:comments> 
    <media:group> 
    <media:category label='Education' scheme='http://gdata.youtube.com/schemas/2007/categories.cat'>Education</media:category> 
    <media:content url='http://www.youtube.com/v/d8nxjUlbKJA?f=videos&amp;app=youtube_gdata' type='application/x-shockwave-flash' medium='video' isDefault='true' expression='full' duration='45' yt:format='5'/> 
    <media:content url='rtsp://rtsp2.youtube.com/CiILENy73wIaGQmQKFtJjfHJdxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp' type='video/3gpp' medium='video' expression='full' duration='45' yt:format='1'/> 
    <media:content url='rtsp://rtsp2.youtube.com/CiILENy73wIaGQmQKFtJjfHJdxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp' type='video/3gpp' medium='video' expression='full' duration='45' yt:format='6'/> 
    <media:description type='plain'/> 
    <media:keywords>ToditoFree, freebies, gelattina, gelattinatv, free, stuff</media:keywords> 
    <media:player url='http://www.youtube.com/watch?v=d8nxjUlbKJA&amp;feature=youtube_gdata'/> 
    <media:thumbnail url='http://i.ytimg.com/vi/d8nxjUlbKJA/2.jpg' height='90' width='120' time='00:00:22.500'/> 
    <media:thumbnail url='http://i.ytimg.com/vi/d8nxjUlbKJA/1.jpg' height='90' width='120' time='00:00:11.250'/> 
    <media:thumbnail url='http://i.ytimg.com/vi/d8nxjUlbKJA/3.jpg' height='90' width='120' time='00:00:33.750'/> 
    <media:thumbnail url='http://i.ytimg.com/vi/d8nxjUlbKJA/0.jpg' height='240' width='320' time='00:00:22.500'/> 
    <media:title type='plain'>ToditoFree: Gratis!!</media:title> 
    <yt:duration seconds='45'/> 
    </media:group> 
    <yt:statistics favoriteCount='0' viewCount='46'/> 
</entry> 

Répondre

1

vos variables semblent tous foiré: -

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 

Je soupçonne que vous avez réellement l'intention: -

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 

La clé ici est nommage . Nommez bien vos variables et les bugs sont plus faciles à voir. Toutefois, après avoir dit que la résultante Url "http://gdata.youtube.com/feeds/api/videos/d8nxjUlbKJA" renvoie une 404.

(BTW tout cela se sent très bien, ai-je traité auparavant, quelque part sur le SO?)

Modifier

Le Le vrai problème avec ce flux particulier est que l'en-tête Content-Type spécifie le contenu à être: "application/atom + xml". Malheureusement, l'ancien objet MSXML3 ServerXMLHTTP ne reconnaît pas ce type de contenu en XML et ne remplit donc pas l'objet ResponseXML.

Vous avez deux options, d'abord si vous avez le contrôle du serveur ou si vous savez que MSXML6 est installé, vous pouvez l'utiliser. Modifiez le ProgID dans le CreateObject à "MSXML2.ServerXMLHTTP.6.0" (vous pouvez également supprimer le paramètre SelectionLanguage étant donné que XPATH est par défaut dans MSXML6).

L'autre option est de charger le ResponseStream dans une instance du DOM vous: -

Au lieu de: -

Dim xml : Set xml = xhr.ResponseXML 

utilisation: -

Dim xml : Set xml = CreateObject("MSXML2.DOMDocument.3.0") 
xml.Load xhr.ResponseStream 
+0

Oui vous avez, mais je suis nouveau à SO et je ne pouvais pas voir où je pourrais vous PM ou ajouter une réponse à la question.J'ai changé le code à celui que vous suggérez, mais toujours obtenir: Erreur d'exécution Microsoft VBScript '800a01a8' objet requis admin_youtube_detail.asp, ligne 29 qui est: Titre Dim: title = entry.SelectSingleNode ("a: title"). Texte –

+0

Cela aiderait si je pouvais voir le flux moi-même mais je viens d'obtenir un 404. Cependant, si votre code obtient un 404, vous n'atteindriez pas la ligne qui est en erreur. Donc, soit j'ai l'URL erronée ou votre code n'est toujours pas ce que je pense que c'est. – AnthonyWJones

+0

Publié le flux XML je reçois, ci-dessus. –

0

J'ai essayé d'utiliser MSXML2.ServerXMLHTTP.3.0 sur mon serveur.
J'ai eu trop de problèmes, donc, maintenant j'utilise Microsoft.XMLHTTP et tout fonctionne bien.

Plus d'erreurs.