2010-03-03 6 views
2

Je construis une application qui permettra aux utilisateurs de télécharger des vidéos sur un compte spécifique sur votre tube.Comment télécharger sur YouTube en utilisant l'API via un serveur proxy

J'ai suivi les exemples sur http://code.google.com/apis/youtube/2.0/developers_guide_dotnet.html pour le téléchargement direct mais je reçois maintenant une authentification proxy 407 requise lorsque request.Upload(newVideo) est appelée.

J'ai trouvé un exemple pour le service Google Agenda à l'aide d'un proxy (http://code.google.com/p/google-gdata/wiki/WebProxySetup), mais je n'arrive pas à trouver comment le refactoriser pour YouTube.

Des idées?

Répondre

2

En utilisant le code fourni par Randolpho j'ai réussi à obtenir le code pour appeler avec succès YouTube. J'ai réussi à simplfy le code plus à

YouTubeRequest request = new YouTubeRequest(settings); 
GDataRequestFactory f = (GDataRequestFactory)request.Service.RequestFactory; 
WebProxy myProxy = new WebProxy("http://proxy-server:port/", true); 
myProxy.Credentials = CredentialCache.DefaultNetworkCredentials; 
f.Proxy = myProxy; 

Le code sera en cours d'exécution avec un compte de service avec accès à Internet, donc je ne devrais pas besoin de fournir un nom d'utilisateur et mot de passe dans le code.

+0

+1: Awesome. M'a aidé. Merci mec. –

5

Il semble que votre proxy nécessite des informations d'identification. Les informations d'identification doivent être fournies dans le code; Je recherche actuellement la source de l'API Google pour la trouver, car ils ont leurs propres objets de requête personnalisés. Pendant ce temps, vous pouvez le faire fonctionner par et non en utilisant le proxy par défaut. Modifier votre app.config ou web.config d'insérer ce au bon endroit:

<configuration> 
<system.net> 
    <defaultProxy> 
    <proxy usesystemdefault="false"/> 
    </defaultProxy> 
</system.net> 
</configuration> 

Edit:

Ok, après avoir fait quelques recherches, voici comment je pense que vous aviez refactorisons la instructions que vous avez liées à votre demande spécifique. En supposant que vous avez déjà créé un YouTubeRequest comme suit:

YouTubeRequest request = new YouTubeRequest(settings); 

Voici les instructions refactorisé de votre lien:

YouTubeRequest request = new YouTubeRequest(settings); 
GDataRequestFactory f = (GDataRequestFactory) request.Service.RequestFactory; 
IWebProxy iProxy = WebRequest.DefaultWebProxy; 
WebProxy myProxy = new WebProxy(iProxy.GetProxy(query.Uri)); 
// potentially, setup credentials on the proxy here 
myProxy.Credentials = CredentialsCache.DefaultCredentials; 
myProxy.UseDefaultCredentials = true; 
f.Proxy = myProxy; 

Voici mes sources:

http://google-gdata.googlecode.com/svn/docs/folder56/T_Google_YouTube_YouTubeRequest.htm

http://google-gdata.googlecode.com/svn/docs/folder53/P_Google_GData_Client_FeedRequest_1_Service.htm

http://google-gdata.googlecode.com/svn/docs/folder19/P_Google_GData_Client_Service_RequestFactory.htm

+0

Salut merci pour la réponse rapide. Je vais essayer la suggestion dans la matinée – bannypotter