Выполнение входа на сайт https через приложение Android - PullRequest
1 голос
/ 22 июня 2011

Во-первых, я довольно новичок в этом.Я новичок в Android, asp, javascript, даже http.

Я пытаюсь создать приложение для Android, которое позволяет мне входить на сайт моей школы и извлекать из него данные, в конечном счете, я надеюсь,сделать что-то вроде вставки данных моего расписания в записи календаря Android.Однако у меня возникают проблемы при входе в систему.

Вот сайт: https://sso.wis.ntu.edu.sg/webexe88/owa/sso_login2.asp

В настоящее время я делаю HTTP POST по указанному выше URL, и я надеюсь,быть перенаправленным на h https://wish.wis.ntu.edu.sg/pls/webexe/aus_stars_check.check_subject_web2, который будет отображать мое расписание.

Пока мой код выглядит следующим образом после просмотра источника веб-страницы и поиска в Интернете:

private void start_login(String[] array) {
    // TODO Auto-generated method stub
    Toast.makeText(this, "Logging in...", Toast.LENGTH_LONG).show();

    WebView wv = new WebView(this);     
    this.setContentView(wv);

    try {

        ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(4);
        nameValuePairs.add(new BasicNameValuePair("UserName", <my username here>));
        nameValuePairs.add(new BasicNameValuePair("PIN", <my password here>));
        nameValuePairs.add(new BasicNameValuePair("Domain", "STUDENT"));
        nameValuePairs.add(new BasicNameValuePair("p2", "https://wish.wis.ntu.edu.sg/pls/webexe/aus_stars_check.check_subject_web2"));

        wv.loadData(CustomHttpClient.executeHttpPost(URL, nameValuePairs), "text/html", "utf-8");

    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}// end start_login

Это функция входа в систему.

Я пользуюсь CustomHttpClient благодаря этому парню: http://www.newtondev.com/2010/07/27/making-http-requests-using-google-android/

Пока что я не получаю никаких результатов.Что я делаю неправильно?Я пропускаю значения в ArrayList или все URL-адреса неверны?

1 Ответ

3 голосов
/ 22 июня 2011

Ниже код обрабатывает https и дает httpsclient для https url. Вам нужен httpsclient для отправки запроса на https URL

Может помочь вам следующий код:

public DefaultHttpClient getClient() 
   {
        DefaultHttpClient ret = null;

        //sets up parameters
        HttpParams params = new BasicHttpParams();
        HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
        HttpProtocolParams.setContentCharset(params, "utf-8");
        params.setBooleanParameter("http.protocol.expect-continue", false);

        //registers schemes for both http and https
        SchemeRegistry registry = new SchemeRegistry();
        registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
        final SSLSocketFactory sslSocketFactory = SSLSocketFactory.getSocketFactory();
        sslSocketFactory.setHostnameVerifier(SSLSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);
        registry.register(new Scheme("https", sslSocketFactory, 443));

        ThreadSafeClientConnManager manager = new ThreadSafeClientConnManager(params, registry);
        ret = new DefaultHttpClient(manager, params);
        return ret;
    }
...