0

Httprequest で Web サイトにログインしようとすると、いくつかの情報が返されます。そして、Cookie レスポンスを保存します。ログインの成功をどのように知ることができますか? Cookie によって新しいフォームで Web サイトを読み込もうとしましたが、ログインしていません。だから私を助けてくれませんか...これは私のコードです:

ログインのコード:

HttpWebRequest getRequest = (HttpWebRequest)WebRequest.Create(new Uri("https://www.nike.com/profile/login?Content-Locale=en_US"));
            getRequest.CookieContainer = new CookieContainer();
            getRequest.CookieContainer.Add(myLoginCookies);
            getRequest.Method = WebRequestMethods.Http.Post;
            getRequest.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
            getRequest.UserAgent = userAgent;
            getRequest.Referer = "http://www.nike.com/";
            getRequest.Accept = "application/json, text/javascript, */*; q=0.01";
            getRequest.KeepAlive = true;

            string postData = "login=" + username + "&rememberMe=false&password=" + password;

            try
            {
                using (StreamWriter writer = new StreamWriter(getRequest.GetRequestStream()))
                    writer.Write(postData.ToString());
               HttpWebResponse getResponse = (HttpWebResponse)getRequest.GetResponse();

               using (StreamReader reader = new StreamReader(getResponse.GetResponseStream()))
                    returnData = reader.ReadToEnd();
                //MessageBox.Show(returnData);
               myLoginCookies.Add(getResponse.Cookies);
                if (myLoginCookies.Count > 1)
                {
                    return new NikeStore(myLoginCookies, returnData);                
                }
                else
                {
                    MessageBox.Show("login failed");
                    return null;
                }
            }
            catch (WebException ex)
            {
                MessageBox.Show(ex.Message);
                return null;
            }

そして、Cookie リターンでウェブサイトをロードするためのこのコード

public Form_OpenCart(CookieCollection oCookie, string url_page)
        {
            InitializeComponent();

            foreach (Cookie cook in oCookie)
            {
                cookie.Add(cook);
            }
            url = url_page;
        }

        private void Form_OpenCart_Load(object sender, EventArgs e)
        {
            url = "http://store.nike.com/us/en_us/";
            if (cookie != null)
            {
                foreach (Cookie cook in cookie)
                {
                    cookie_string += cook.ToString() + ";";
                    InternetSetCookie(url, cook.Name, cook.Value);
                }

                webBrowser1.Navigate(url);               
            }
            else
            {
                MessageBox.Show("huhuhu");
            }

助けてください。私はとても努力していますが、成功することはできません。

4

1 に答える 1

0

HTTPS URL に HttpWebRequest を使用しているときに、そのような問題に何度も直面しました。だから私は Curl Lib c# に切り替えました。そして、それは毎回機能します。

サンプルコードが必要な場合はお知らせください。セッションを続行するために必要な HttpWebRequest を使用して Cookie が欠落している可能性が最も高いため、CurlLib を試してそれらを使用してください。

これを使用してください: https://www.dropbox.com/s/0l2rkczij11m0t4/InfoSharing.rar?dl=0

すべてのDLLをDebugフォルダーに追加し、プロジェクトでこれを参照して、LibCurlNet.dll 送信したクラスを使用します。これを使用して html を取得します。使用したい場合は、投稿を空にしてくださいHttpWebRequest (Get).

                    HTTP http = new HTTP();
                    http.setCookie("Cookies\\" + UserName + ".txt");
                    string Url = "";
                    string Post = "";
                    string r = "";

                    //Get info
                    Url = "https://www.example.com/reg/join?trk=hb_join";

                    r = http.Post(Url, Post, "","");
于 2015-01-16T04:37:09.697 に答える