ありがとう、icktoofay、 HttpWebRequest
とHttpWebResponse
を使ってみました。HttpWebRequestとHttpWebResponseクラス(Cookie、Credentialsなど)を使用してファイルをダウンロードする方法
ユーザー名とパスワードのような資格情報を渡してURLを要求するとき。
応答でセッションIDが返されます。
セッションIDを取得した後、さらに移動する方法。
認証されたユーザーは、資格情報/ Cookieを使用して追跡されます。 ダウンロードするファイルと資格情報の正確なURLがあります。 クッキーを使用したい場合、私は行います。私はファイルデータを読んで、指定された場所にそれを書き込む/保存する必要があります。
私が使用しているコードは次のとおりです。
string username = "";
string password = "";
string reqString = "https://xxxx.com?FileNAme=asfhasf.mro" + "?" +
"username=" + username + &password=" + password;
byte[] requestData = Encoding.UTF8.GetBytes(reqString);
string s1;
CookieContainer cc = new CookieContainer();
var request = (HttpWebRequest)WebRequest.Create(loginUri);
request.Proxy = null;
request.CookieContainer = cc;
request.Method = "POST";
HttpWebResponse ws = (HttpWebResponse)request.GetResponse();
Stream str = ws.GetResponseStream();
//ws.Cookies
//var request1 = (HttpWebRequest)WebRequest.Create(loginUri);
byte[] inBuf = new byte[100000];
int bytesToRead = (int) inBuf.Length;
int bytesRead = 0;
while (bytesToRead > 0)
{
int n = str.Read(inBuf, bytesRead,bytesToRead);
if (n==0)
break;
bytesRead += n;
bytesToRead -= n;
}
FileStream fstr = new FileStream("weather.jpg", FileMode.OpenOrCreate,
FileAccess.Write);
fstr.Write(inBuf, 0, bytesRead);
str.Close();
fstr.Close();
ありがとうAles、はい、最初のメソッドを試してセッションIDとしてCookieを取得しました。そのCookieコレクションを新しいWebRequestに割り当て、ファイルURLへのリクエストを試します。iehttps://ghasghfh/filename=hasfhgfhg.mro 。私はStringフォームでレスポンスを取得しようとすると。私が得る文字列値は、ログインページのHTMLコード/ ViewSourceです。私に返信してください..本当にありがとうございました。 – Vinay
あなたはウェブページのダウンロードに成功しましたが、ログインとパスワードは正しく渡されていません。私の例(string.Formatコマンドの行を参照してください)はPOSTのフォーマットを使用しています。これはサーバー上でphpを使って自分のコードを使いたいと思っていました。私は、サーバーとのすべての通信を表示するFirefoxプラグインを使い始めてから、私のコードで同じことをしました。そして、それは動作します。 –
Al Kepp、U r右、ファイルのHTMLを正常にダウンロードできました。問題や問題が継続している場合の示唆。何か特別な注意が必要か。 – Vinay