2011-12-21 3 views
0

クライアント側からのリンクからexeプロンプトのダウンロードを自動化したいと思います。 http://go.microsoft.com/fwlink/?LinkID=149156からhttp://www.microsoft.com/getsilverlight/handlers/getsilverlight.ashxにリダイレクトされた最初のリンクを取得できます。クリックしてどのように動作するか確認してください。 fwlink - > .ashx - > .exe ...私は直接.exeへのリンクを取得したいと思います。 しかし、コードを介してWebハンドラを要求するときに応答が404を返しますが、ブラウザを試すと実際にダウンロードされます。 誰でも上記のリンクをダウンロードフォームを自動化する方法を提案できますか?リダイレクトされたリンクを取得するために使用しているコードはこれです。Webブラウザで保存/ダイアログを抑制し、ダウンロードを自動化する

public static string GetLink(string url) 
{ 
    HttpWebRequest httpWebRequest = WebRequest.Create(url) as HttpWebRequest; 
    httpWebRequest.Method = "HEAD"; 
    httpWebRequest.AllowAutoRedirect = false; 
    // httpWebRequest.ContentType = "application/octet-stream"; 
    //httpWebRequest.Headers.Add("content-disposition", "attachment; filename=Silverlight.exe"); 
    HttpWebResponse httpWebResponse = httpWebRequest.GetResponse() as HttpWebResponse; 
    if (httpWebResponse.StatusCode == HttpStatusCode.Redirect) 
    { 
     return httpWebResponse.GetResponseHeader("Location");    
    } 
    else 
    { 
     return null; 
    } 
} 
+1

@DavidStratton:彼はクライアント上でC#コードを実行しています(私は仮定します)。セキュリティ上の問題はありません。 – SLaks

+0

Cookieを追加するか、HEADではなくGETを使用してみてください。 – SLaks

+0

ありがとうSLaks.IはGETを試みました。それは動作しませんでしたが、クッキーの...私はそれがあなたが意味するものなら、それを応答に追加しようとしましたか? – Deku

答えて

2

これをテストしてファイルをダウンロードします。

あなただけの特定のSilverlightのダウンロードはあなたが実行しているか、ブラウザに依存して、それが1つを検出できない場合、それは失敗します、したがって、ユーザーエージェントを追加する必要が
WebClient client = new WebClient(); 

client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"); 

client.DownloadFile(url, "Filename.exe"); 

ユーザーエージェントを、適切なダウンロードをトリガーするものに変更します。

+0

ありがとうございました!それは魅力のように働いた! – Deku

関連する問題