locked
Авторизация на сайте не работает в wp7 RRS feed

  • Общие обсуждения

  • Здравствуйте!

    Есть код авторизации(нашел в нете),и он в консольке работает,но точно такой же код в wp не работает приложение не может авторизоваться.В чем может быть дело?

    Может есть другой код для авторизации?

                HttpClientHandler handler = new HttpClientHandler();
                handler.UseDefaultCredentials = true;
                handler.AllowAutoRedirect = true;
                handler.UseCookies = true;
                handler.CookieContainer = new CookieContainer();
    
                using (var client = new HttpClient(handler))
                {
                    var values = new List<KeyValuePair<string, string>>();
                    values.Add(new KeyValuePair<string, string>("login", "log"));
                    values.Add(new KeyValuePair<string, string>("password", "pas"));
                    values.Add(new KeyValuePair<string, string>("rememberMe", "true"));
    
                    var content = new FormUrlEncodedContent(values);
                    var response = await client.PostAsync("site", content);
                    response.EnsureSuccessStatusCode();
    
                    var res = response.StatusCode;
    
                    string result = await response.Content.ReadAsStringAsync();
    
    
                }
                CookieCollection cookies = handler.CookieContainer.GetCookies(new Uri(host));

    15 июля 2014 г. 4:07

Все ответы

  • Этот код не только работать, но и компилироваться для wp не должен, т.к. в .net API WP отсутствуют используемые в коде классы (HttpClient в частности). Да и ключевое слово await появилось в C# позднее выпуска WP7 SDK.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    15 июля 2014 г. 5:25
  • попробуйте установить nugget "httpclient".
    15 июля 2014 г. 5:43
  • код компилируется и приложение запускается
    15 июля 2014 г. 5:48
  • он установлен.в result находиться код со страничкой авторизации,а когда в консольке выполняю то там страница после авторизации
    15 июля 2014 г. 5:49
  • Никто не может ничего подсказать?
    16 июля 2014 г. 6:18
  • 7 августа 2014 г. 6:39
  • К сожалению не авторизуется
    7 августа 2014 г. 18:32
  • к сожалению не могу :)
    18 августа 2014 г. 13:28
  • к сожалению не могу :)
    В таком случае соберите простенький семпл с необходимым кодом. Зарегистрируйте новый тестовый аккаунт. 
    18 августа 2014 г. 14:29
  • Дарю свой кусок кода. Работать он сразу не будет, т.к. есть несколько функций которые я выкладывать не буду, но догадаться что они делают и написать их реализацию не составить труда.

    private void LoginAsync(string login, string password)
    {
    	AuthToken = "";
    
    	Uri driveUri = new Uri("http://www.drive2.ru/reception/?.AMRU=http%3A%2F%2Fwww.drive2.ru%2F");
    	HttpWebRequest hwr = (HttpWebRequest)HttpWebRequest.Create(driveUri);
    	hwr.Method = "POST";
    	hwr.ContentType = "application/x-www-form-urlencoded";
    	hwr.AllowAutoRedirect = false;
    
    	hwr.BeginGetRequestStream(new AsyncCallback((o) =>
    	{
    		HttpWebRequest myRequest = (HttpWebRequest)o.AsyncState;
    		Stream postStream = myRequest.EndGetRequestStream(o);
    
    		string postData = "login=" + HttpUtility.UrlEncode(login) + "&password=" + HttpUtility.UrlEncode(password) + "&rememberMe=true&nocache=" + Environment.TickCount;
    
    		byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(postData);
    		postStream.Write(byteArray, 0, byteArray.Length);
    		postStream.Close();
    
    		myRequest.BeginGetResponse(new AsyncCallback((oo) =>
    		{
    			try
    			{
    				HttpWebRequest request = (HttpWebRequest)oo.AsyncState;
    				HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(oo);
    
    				if (response.Headers["Set-Cookie"] != null)
    				{
    					string token = DriveParsers.GetUserToken(response.Headers["Set-Cookie"]);
    					if (token != null) // if ok
    					{
    						AuthToken = token;
    					}
    				}
    			}
    			catch (WebException)
    			{
    				OnConnectionError();
    				OnLoginCompleted(null);
    				return;
    			}
    			if (AuthToken != "")
    			{
    				Login = login;
    				Password = password;
    				OnLoginCompleted(true);
    			}
    			else
    				OnLoginCompleted(false);
    		}), myRequest);
    	}), hwr);
    } 



    • Изменено Alexey Gurin 20 августа 2014 г. 7:30
    20 августа 2014 г. 7:22