Привет всем! Избитая тема уже про авторизацию на vkontakte.ru, есть много готовых вариантов, но все они на pythone или, еще хуже, на perle (самый непонятный язык, который я видел). Как реализовать на джаве я так и не понял. Итак, вот что я уже сделал: | Код | public String VKLogin(String pEmail, String pPassword, ArrayList<Cookie> pCookiesList){
HttpClient http = new HttpClient (); PostMethod post = new PostMethod (ADDRESS_LOGIN); post.addParameter("op", "a_login_attempt"); post.addParameter("email", pEmail); post.addParameter("pass", pPassword); post.addParameter("expire", "0"); post.getParams().setContentCharset("CP1251"); http.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
try{ int PostResult = http.executeMethod(post); if (PostResult == HttpStatus.SC_OK){ //Answer of server String resp = post.getResponseBodyAsString(); if (resp.indexOf("good", 0) < 0){ //authorization failed return ""; }else{
//authorization passed saving cookies for (int i=0; i<http.getState().getCookies().length; i++){ pCookiesList.add(http.getState().getCookies()[i]); }
return ADDRESS_ID + resp.substring(4, resp.length()); }
} else{ System.out.print("Page is not found. Please try again later"); return ""; }
} catch (IOException e){ System.out.print("Error while page downloading. Check internet connection"); e.printStackTrace(); return ""; } finally{ post.releaseConnection(); } }
|
Функция возвращает строку с ID пользователя вконтакте + набор кук (например, такие): remixlang=0 remixchk=5 remixmid=23243243 remixemail=someemail%40mail.ru remixpass=743d7561edb5b24e1bdd42652c9zf726 remixsid=d3937df631e2dd64561e8a7b50zceaa0xe171b24f28dad9f3e0ff58a4 Дальше что мне с ними сделать, чтобы зайти на мою страницу vkontakte.ru/id33548643 ?? Пытаюсь сделать так: | Код | private String RequestPage (String pURL, ArrayList<Cookie> pCookiesList){
HttpState state = new HttpState(); HttpClient http = new HttpClient (); GetMethod get = new GetMethod (pURL); http.getParams().setContentCharset("UTF-8"); //http.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY); get.getParams().setContentCharset("CP1251"); try{ for (int i=0; i<pCookiesList.size(); i++){ state.addCookie(pCookiesList.get(i)); System.out.println(pCookiesList.get(i)); }
http.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY); http.getParams().setParameter("Referer", "http://vkontakte.ru/id34234345"); //http.getParams().USER_AGENT = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10"; http.getParams().setParameter("Connection", "keep-alive"); http.getParams().setParameter("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10"); http.setState(state); http.executeMethod(get); printStream (get.getResponseBodyAsString()); //saving string to file } catch (IOException ex){ ex.printStackTrace(); return ""; } finally{ get.releaseConnection(); } return ""; }
|
На выходе получаю страницу авторизации, как будто авторизация не прошла..... 4 дня уже бьюсь, никто ничего не подскажет что делать? =) Это сообщение отредактировал(а) DoZENT - 30.5.2009, 17:49
--------------------
Какая боль, какая боль, Internet Explorer 5.0...
|