0

Httprequest에서 웹 사이트에 로그인하려고 시도하고 일부 정보에 응답합니다. 쿠키 응답을 저장합니다. 그렇다면 로그인 성공 여부를 어떻게 알 수 있습니까? 쿠키로 새로운 양식이있는 웹 사이트를로드하려고 시도하지만 로그인하지 않았습니다. 로그인에 대한cookieContainer HttpWebrequest에서 Webrowser에 웹 사이트를로드하는 방법

코드 :

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; 
      } 

그리고 쿠키에 의한 부하의 웹 사이트에이 코드

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"); 
      } 

이 Plz은 나를 도와 반환 그래서 ... 을 도와 수 이것은 내 코드입니다. 나는 많이 시도하지만 성공할 수는 없다.

답변

0

HTTPS URL에 HttpWebRequest를 사용할 때 여러 번 문제가 발생했습니다. 그래서 Curl Lib C#으로 전환했습니다. 그리고 매번 작동합니다.

샘플 코드가 필요한 경우 알려주십시오. HttpWebRequest를 사용하여 쿠키를 잃어 버렸을 가능성이 높습니다. 그 중 일부는 세션을 수행하는 데 필요하므로 CurlLib을 사용하여 시도해보십시오.

사용이 : https://www.dropbox.com/s/0l2rkczij11m0t4/InfoSharing.rar?dl=0

이 Debug 폴더에 모든 DLL을 추가하고 프로젝트에 그냥 보낸 클래스를이 LibCurlNet.dll 을에 refrence 그리고 사용합니다. 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, "",""); 
+0

dotnet ... plz로 몇 가지 코드 데모 또는 CurlLib에 대한 몇 가지 사항을 제공해 주시겠습니까? 나는 foward를 찾고 있어요 –

+0

@ BuiHoang 1 분만주세요. 수업을 보내서 프로젝트에 추가하면됩니다. – confusedMind

+0

예. 어쨌든 ... 고마워요. 선생님. –