Всем привет. Хочу написать программу клиент для жж. Есть хорошее описание здесь с исходниками. Но при запуске на VS2010 получаю ошибку Удаленный сервер возвратил ошибку (417) Expectation failed. Не могу понять в чем дело. Буду благодарен за любые подсказки.
И да поможет тебе Google! Код 417 - Expectation Failed По каким-то причинам сервер не может удовлетворить значению поля Expect заголовка запроса. Что-то не то в твоей авторизации. Код, который выдает ошибку, в студию, пожалуйста. (Я знаю, что взял ты его по ссылке, но не исключено, что ты мог его редактировать)
Плоская flat авторизация Code: private void login_Click (object sender, EventArgs e) { GetServer ().LoginClear (loginText.Text, passwordText.Text); } Переходим в GetServer Code: private LJServer GetServer () { LJServer currentServer; if (protocol.SelectedIndex == 0) { currentServer = _flatServer; } else { currentServer = _xmlServer; } currentServer.Proxy = GetProxy (); return currentServer; } На выходе ServerUri "http://www.livejournal.com/interface/flat" string Proxy null System.Net.WebProxy ContentType "application/x-www-form-urlencoded" string Переходим в LoginClear Code: public override void LoginClear (string user, string password) { string request = string.Format ("mode=login&auth_method=clear&user={0}&password={1}", user, password); this.SendRequest (request); } request "mode=login&auth_method=clear&user=t_ingvarr&password=parol" string Далее SendRequest Code: protected string SendRequest (string textRequest) { // Выводим в лог посылаемый запрос _log.WriteLine ("\r\n*** Request:"); _log.WriteLine (textRequest); // Преобразуем запрос из строки в byte[] byte[] byteArray = Encoding.UTF8.GetBytes (textRequest); // Поулчаем класс запроса HttpWebRequest request = (HttpWebRequest)WebRequest.Create (ServerUri); // Заполняем параметры запроса request.Credentials = CredentialCache.DefaultCredentials; request.Method = "POST"; request.ContentLength = textRequest.Length; request.ContentType = this.ContentType; // Очищаем коллекцию от старых cookie и добавляем туда новые request.CookieContainer = new CookieContainer (); request.CookieContainer.Add (_cookies); // Заполняем параметры Proxy (_proxy == null, если прокси не используется) request.Proxy = _proxy; // Если есть cookie с именем "ljsession", то для авторизации с ее помощью // необходимо добавить заголовок с именем "X-LJ-Auth" и значением "cookie" if (_cookies["ljsession"] != null) { request.Headers.Add ("X-LJ-Auth", "cookie"); } // Отправляем данные запроса Stream requestStream = request.GetRequestStream (); requestStream.Write (byteArray, 0, textRequest.Length); // Получаем класс ответа HttpWebResponse response = (HttpWebResponse)request.GetResponse (); // Читаем ответ Stream responseStream = response.GetResponseStream (); StreamReader readStream = new StreamReader (responseStream, Encoding.UTF8); string currResponse = readStream.ReadToEnd (); // Выводим в лог ответ сервера _log.WriteLine ("\r\n*** Response:"); _log.WriteLine (currResponse); // Выведем в лог полученные в ответе cookie _log.WriteLine ("\r\n*** Cookies:"); for (int i = 0; i < response.Cookies.Count; i++) { _log.WriteLine (response.Cookies[i].ToString()); } readStream.Close (); response.Close (); return currResponse; } Потом ошибка