2

ユーザーがユーチューブの特定のアカウントに動画をアップロードできるようにするアプリケーションを構築しています。

http://code.google.com/apis/youtube/2.0/developers_guide_dotnet.htmlの例に従って直接アップロードしましたが、呼び出し時に 407 プロキシ認証が必要になりましたrequest.Upload(newVideo)

プロキシを使用した Google カレンダー サービスの例 ( http://code.google.com/p/google-gdata/wiki/WebProxySetup ) を見つけましたが、YouTube 用にリファクタリングする方法がわかりません。

何か案は?

4

2 に答える 2

5

プロキシに資格情報が必要なようです。クレデンシャルはコードで提供する必要があります。Google APIには独自のカスタムリクエストオブジェクトがあるため、現在GoogleAPIのソースをトロールして見つけています。

それまでの間、デフォルトのプロキシを使用しないだけで機能する可能性があります。app.configまたはweb.configを変更して、これを正しい場所に挿入します。

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

編集:

さて、掘り下げた後、特定のリクエストに対してリンクした命令をリファクタリングする方法は次のとおりです次のようにYouTubeRequestをすでに作成していると仮定します。

YouTubeRequest request = new YouTubeRequest(settings);

リンクからのリファクタリングされた手順は次のとおりです。

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;

これが私の情報源です:

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

于 2010-03-03T19:23:43.050 に答える
2

Randolpho から提供されたコードを使用して、コードから YouTube を正常に呼び出すことができました。私はコードをもっと単純化することができました

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;

コードはインターネットにアクセスできるサービス アカウントで実行されるため、コードでユーザー名とパスワードを指定する必要はありません。

于 2010-03-04T10:23:32.040 に答える