На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ElcnU
  
> Windows Phone 7 POST запрос и cookie
    Немогу разобраться как правильно выполнять POST запросы в Windows phone 7 приложении. Впринцапе для этого есть несколько способов...Использовать WebClient или HttpWebRequest.
    WebClient прост в управлении, но нет работы с cookie. А HttpWebRequest с его асинхронными методами...вообщем пока я не совсем понимаю как он работает.
    Хочу разобраться, что лучше использовать для авторизации на сервере. Для примера, решил попробоват залогиниться на сайте Вконтакте. Пробовал следующие способы:

    Пробовал через WebClient:
    ExpandedWrap disabled
              public class CookieAwareClient : WebClient
              {
                  [System.Security.SecuritySafeCritical]
                  public CookieAwareClient()
                      : base()
                  {
                  }
                  private CookieContainer m_container = new CookieContainer();
                  protected override WebRequest GetWebRequest(Uri address)
                  {
                      WebRequest request = base.GetWebRequest(address);
                      if (request is HttpWebRequest)
                      {
                          (request as HttpWebRequest).CookieContainer = m_container;
                      }
                      return request;
                  }
              }
       
                  CookieAwareClient cookieClient = new CookieAwareClient;
                  cookieClient.OpenWriteCompleted+=new OpenWriteCompletedEventHandler(cookieClient_OpenWriteCompleted);
                  cookieClient.Headers["User-Agent"] = "Mozilla/4.0 (compatible; ICS)";
                  cookieClient.OpenWriteAsync(new Uri("http://login.vk.com"), "POST", "email=myemail@server.com&pass=mypassword");
       
              void  cookieClient_OpenWriteCompleted(object sender, OpenWriteCompletedEventArgs e)
              {
                  var responseTest = e.Result.ToString();
              }


    Вообщем, если посмотреть через HttpAnalyzer, то в Response Headers будет пусто, следовательно в cookie тоже пусто, а вот в Response Content написано: Request is not completed. waiting ...

    Потом использовал библиотеку RestSharp:

    ExpandedWrap disabled
      var client = new RestClient("http://login.vk.com");
       
              var request = new RestRequest("?act=login", Method.POST);
              request.AddParameter("email", "myemail", ParameterType.GetOrPost);
              request.AddParameter("pass", "mypassword", ParameterType.GetOrPost);
              request.AddParameter("vk", "mytoken", ParameterType.GetOrPost);
       
              client.ExecuteAsync(request, (response) =>
              {
                  CookieCollection cookie = client.CookieContainer.GetCookies(response.ResponseUri);
                  var auth = response.Content.ToString();
              });

    И тоже самое, если посмотреть через HttpAnalyzer, то в Response Headers и cookie пусто, и опять же Response Content написано: Request is not completed. waiting ...
    Что я делаю не так? тот же самый код (c RestSharp) пробовал для авторизации в Google Reader и все работает. а с Вконтакте нет...
    Как вообще правильно выполнить такой POST запрос для авторизации на сайте?
      Возможно поздновато, но тем не менее. Видео урок по авторизации вконтакте.ру.
      techedu | Windows Phone Days #4. Авторизация ВКонтакте
      Взято из группы в контакте Microsoft TechEDU (C#, C++)
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0224 ]   [ 15 queries used ]   [ Generated: 24.04.24, 16:39 GMT ]