我一直在努力寻找如何通过Android登录我大学的CAS系统一个月的大部分时间。我是HTTP和身份验证的总菜鸟,我花了很多时间在谷歌搜索条款,但我现在已经把它们了很多。
无论如何,我正在尝试登录CAS系统,我能够找到我在下面发布的系统工作原理图。
到目前为止,我有以下代码:
DefaultHttpClient httpClient = new DefaultHttpClient();
try {
HttpGet httpGet = new HttpGet(LOGIN);
HttpResponse response = httpClient.execute(httpGet);
HttpEntity entity = response.getEntity();
Log.i(TAG, "Login form get: " + response.getStatusLine());
if (entity != null) {
entity.consumeContent();
}
Log.i(TAG, "Initial set of cookies: ");
List<Cookie> cookies = httpClient.getCookieStore().getCookies();
if (cookies.isEmpty()) {
Log.i(TAG, "THere are no cookies");
}
else {
for (int i = 0; i < cookies.size(); i++) {
Log.i(TAG, " - " + cookies.get(i).toString());
}
}
HttpPost httpPost = new HttpPost(LOGIN);
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("username", "egaebel"));
nvps.add(new BasicNameValuePair("password", "Under&round11"));
httpPost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
Log.i(TAG, "The last header's value is.... " + response.getAllHeaders().length);
response = httpClient.execute(httpPost);
entity = response.getEntity();
Log.i(TAG, "Login form get: " + response.getStatusLine());
if (entity != null) {
entity.consumeContent();
}
Log.i(TAG, "Post login cookies: ");
cookies = httpClient.getCookieStore().getCookies();
if (cookies.isEmpty()) {
Log.i(TAG, "No Cookies");
}
else {
for (int i = 0; i < cookies.size(); i++) {
Log.i(TAG, " - " + cookies.get(i).toString());
}
}
httpClient.getConnectionManager().shutdown();
此代码不会返回任何错误,但它只会抓取一个cookie,当我认为我需要一个时,CASTGC cookie ......
我希望有比我更有经验的人能够理解上面的图表,至少告诉我我是否走在正确的轨道上。
感谢阅读。
答案 0 :(得分:1)
您对CAS RESTful API感兴趣: https://wiki.jasig.org/display/CASUM/RESTful+API
RESTful API遵循与原始CAS2协议相同的基本协议,并增加了一些明确定义的资源URL。这对于需要以编程方式访问CAS的应用程序特别有用。
希望这有帮助。
答案 1 :(得分:0)
搞定了!我只需要传递正确的SSL证书,并在逻辑上使用Jsoup。还有一些隐藏的领域,我不得不抓住一些饼干,我必须遵循回应得到....