Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[13.59.36.203] |
|
Сообщ.
#1
,
|
|
|
Немогу разобраться как правильно выполнять POST запросы в Windows phone 7 приложении. Впринцапе для этого есть несколько способов...Использовать WebClient или HttpWebRequest.
WebClient прост в управлении, но нет работы с cookie. А HttpWebRequest с его асинхронными методами...вообщем пока я не совсем понимаю как он работает. Хочу разобраться, что лучше использовать для авторизации на сервере. Для примера, решил попробоват залогиниться на сайте Вконтакте. Пробовал следующие способы: Пробовал через WebClient: 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: 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 запрос для авторизации на сайте? |
Сообщ.
#2
,
|
|
|
Возможно поздновато, но тем не менее. Видео урок по авторизации вконтакте.ру.
techedu | Windows Phone Days #4. Авторизация ВКонтакте Взято из группы в контакте Microsoft TechEDU (C#, C++) |