v1rtyaluk
Junior Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Ребята помогите, пожалуйста! Нужно перевести код из j2me на C#. Собственно код: Код: import com.sun.me.web.request.Arg; import com.sun.me.web.request.Request; import com.sun.me.web.request.Response; import org.json.me.JSONObject; /** * * @author andryk */ public class VkApi { public static VkApi instance = new VkApi(); public static final String URL = "api.vkontakte.ru/api.php"; //Заполните данными своего приложения public static final String APP_ID = ""; /* Хеш приложения. Заходим браузером на страничку авторизации и ищем в коде переменную 'var auth_hash' Этот хеш нужен для авторизации. */ private static final String APP_HASH = ""; private static final Arg FORM_HEADER = new Arg("Content-Type", "application/x-www-form-urlencoded"); protected String userId; protected String sid; protected String secret; protected String expire; protected boolean isLogged = false; protected boolean needCaptcha = false; protected String captchaSid="", captchaKey=""; public PopupBox captcha = null; protected VkApi() { } protected String findS(String source) throws Exception { System.out.println(source); String pattern = "id='s' value='"; int start = source.indexOf(pattern); String s = source.substring(start + pattern.length(), start + pattern.length() + 56); if (s.length() != 56) { throw new Exception("s not finded in form"); } return s; } public boolean isLogged() { return isLogged; } public boolean isNeedCaptcha() { return needCaptcha; } public String getSecret() { return secret; } public String getUserId() { return userId; } public String getSid() { return sid; } class NeedCaptchaException extends Exception { String sid; public NeedCaptchaException(String s) { sid = s; } public String getUrl() { return "api.vk.com/captcha.php?sid=" + sid + "&s=1"; } public String getSid() { return sid; } } public void setCaptchaKey(String captchaKey) { this.captchaKey = captchaKey; } public void login(String login, String password) { try { Response result = Request.post("login.vk.com/", new Arg[]{ new Arg("act", "login"), new Arg("app", APP_ID), new Arg("app_hash", APP_HASH), new Arg("captcha_key", captchaKey), new Arg("captcha_sid", captchaSid), new Arg("email", login), new Arg("pass", password), new Arg("permanent", "1"), new Arg("vk", "") }, new Arg[]{FORM_HEADER}, null, null, null); //Если код редиректа - значит что то не так. if (result.getCode() == 302) { String sid = null; int start = -1; for (int i = 0 ; i < result.getHeaders().length; i++) { if (result.getHeaders()[i].getKey().toLowerCase().equals("location")) { String l = result.getHeaders()[i].getValue(); start = l.indexOf("m=1&cs="); int end = l.indexOf("&", start + 7); sid = l.substring(start + 7, end); break; } } //Или нужен ввод капчи if(start > 0 ) throw new NeedCaptchaException(sid); //Или неправильный логин/пароль else throw new Exception("Wrong login/pass"); } needCaptcha = false; //Посылаем новый запрос с куками от предыдущего Response result2 = Request.get("login.vk.com/?vk=", null, null, null, result.getCookies()); //Находим SID //.getResult().getRaw() - тело ответа s = findS(result2.getResult().getRaw()); //Последний 3 запрос, в котором мы найдем искомые данные Response result3 = Request.get("vkontakte.ru/login.php?app="+APP_ID+"&layout=popup&type=browser&settings=1054", null, null, null, new Arg[]{new Arg("remixsid", s)}); String r = result3.getResult().getRaw(); int start = r.indexOf("{\"mid\""); //Нашли наш JSON обьект с данными сессии String sess = r.substring(start, r.indexOf("}", start) + 1); //Нужно считать его JSONObject session = new JSONObject(sess); //Запоминаем данные userId = session.getString("mid"); sid = session.getString("sid"); secret = session.getString("secret"); expire = session.getString("expire"); isLogged = true; } catch (NeedCaptchaException e) { //Выводим юзеру капчу, адрес картинки - e.getUrl() //После этого устанавливаем код setCaptchaKey(String key) //И делаем логин заново } catch (Exception e) { isLogged = false; //Действия если логин/пароль неправильные } } } | Помогите плиз... |