0

このコードを使用して、POST リクエスト経由で Web サイトにログインしています。

HttpWebRequest httpWReq =
    (HttpWebRequest)WebRequest.Create(@"http:\\domain.com\page.asp");

ASCIIEncoding encoding = new ASCIIEncoding();
string postData = "username=user";
postData += "&password=pass";
byte[] data = encoding.GetBytes(postData);

httpWReq.Method = "POST";
httpWReq.ContentType = "application/x-www-form-urlencoded";
httpWReq.ContentLength = data.Length;

using (Stream stream = httpWReq.GetRequestStream())
{
    stream.Write(data,0,data.Length);
}

HttpWebResponse response = (HttpWebResponse)HttpWReq.GetResponse();

string responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();

C# コンソール アプリケーションを使用して HTTP ポスト リクエストを作成し、レスポンスを受信する

正常に動作し、ログインしていることを示す応答で html 文字列を取得します。しかし、たとえば、別の URL でプロファイル データを取得したいと考えています。たとえば、「wwww.mywebsite.com/login」でログインし、2 番目の URL は「www.mywebsite.com/myprofile」です。その 2 番目の URL からコンテンツを取得できますか? もちろん、このプロファイル データはログイン後にしか見ることができません。

4

1 に答える 1

0

Web サイトは Cookie を使用して、サーバーと Web クライアントの間で ID を転送すると想定できます。したがって、認証 Cookie を渡す別のリクエストを作成する場合は、次のようにする必要があります。

この時点でサイトにログインすると

 HttpWebResponse response = (HttpWebResponse)HttpWReq.GetResponse();

応答で返されたすべての Cookie を次の方法で保存します。

 CookieCollection cookies = response.Cookies;

次に、別のリクエストを行うときに、Cookie を追加します。

 HttpWebRequest httpWReq =
       (HttpWebRequest)WebRequest.Create(@"http:\\www.mywebsite.com\myprofile");
 // other staff here 
 ...
 ...

 // then add saved cookies to the request
 httpWReq.CookieContainer.Add(cookies);

 // then continue executing the request
 ...
 ...
于 2013-03-29T15:45:39.180 に答える