首先,我很擅长这个。我是Android,asp,javascript,甚至是http的新手。
我正在尝试构建一个Android应用程序,允许我登录我学校的网站并从中取出数据,最终我希望做一些事情,比如将我的时间表数据插入到Android的日历条目中。但是我无法登录。
这是网站: https://sso.wis.ntu.edu.sg/webexe88/owa/sso_login2.asp
我目前正在做的是对上述URL进行http POST,我希望将其重定向到hhttps://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错了?
答案 0 :(得分:3)
以下代码处理https并为https url提供httpsclient ..您需要httpsclient向https网址发出请求。
以下代码可能对您有所帮助:
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;
}