fix user login into myexperiment. Watch status code of 307, 301,302 for redirects
Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/commit/bce87110 Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/tree/bce87110 Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/diff/bce87110 Branch: refs/heads/master Commit: bce871108eb9206b33163a4021faa2e3fcf1e566 Parents: 22e8de5 Author: larrytech7 <[email protected]> Authored: Wed Jul 22 23:04:46 2015 +0100 Committer: larrytech7 <[email protected]> Committed: Wed Jul 22 23:04:46 2015 +0100 ---------------------------------------------------------------------- .../mobile/activities/LoginActivity.java | 41 +++++++++++++++----- 1 file changed, 31 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/bce87110/app/src/main/java/org/apache/taverna/mobile/activities/LoginActivity.java ---------------------------------------------------------------------- diff --git a/app/src/main/java/org/apache/taverna/mobile/activities/LoginActivity.java b/app/src/main/java/org/apache/taverna/mobile/activities/LoginActivity.java index 7048554..c50f5bb 100644 --- a/app/src/main/java/org/apache/taverna/mobile/activities/LoginActivity.java +++ b/app/src/main/java/org/apache/taverna/mobile/activities/LoginActivity.java @@ -141,6 +141,8 @@ public class LoginActivity extends ActionBarActivity { private class LoginTask extends AsyncTask<String, Void, String>{ private Context context; private ProgressDialog pd; + String cookie; + String userurl; private LoginTask(Context context) { this.context = context; @@ -168,31 +170,49 @@ public class LoginActivity extends ActionBarActivity { con = (HttpURLConnection) url.openConnection(); String userName = params[0]; String password = params[1]; + boolean redirect = false; String authentication = userName + ":" + password; con.setRequestMethod("GET"); con.setRequestProperty("Authorization", "Basic " + Base64.encodeToString(authentication.getBytes(), Base64.DEFAULT)); con.setInstanceFollowRedirects(true); - + HttpURLConnection.setFollowRedirects(true); con.connect(); - response = String.valueOf(con.getResponseCode()); - //response values are: - //401 for an unauthorized or invalid credential and 200 for a valid and authorized user - System.out.println("url = "+con.getURL()); - System.out.println("content-type = "+con.getContentType()); - System.out.println("content encoding "+con.getContentEncoding()); - System.out.println("date"+con.getDate()); - System.out.println("" + response); - System.out.println(""+con.getResponseMessage()); + int status = con.getResponseCode(); + response = String.valueOf(status); + if(status != HttpURLConnection.HTTP_OK){ + if (status == HttpURLConnection.HTTP_MOVED_PERM || + status == HttpURLConnection.HTTP_MOVED_TEMP || + status == HttpURLConnection.HTTP_SEE_OTHER || status == 307){ + redirect = true; + } + + } + System.out.println("Status code: "+status); + if(redirect) { + // get redirect url from "location" header field + String newUrl = con.getHeaderField("Location"); + this.userurl = newUrl; + // get the cookie needed, for login + String cookies = con.getHeaderField("Set-Cookie"); + this.cookie = cookies; + // open the new connection again + con = (HttpURLConnection) new URL(newUrl).openConnection(); + con.setRequestProperty("Cookie", cookies); + System.out.println("Redirect to URL : " + newUrl); + con.connect(); + } BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream())); StringBuilder sb = new StringBuilder(); String s = ""; while((s = br.readLine())!= null ){ sb.append(s); } + br.close(); System.out.println("data: "+sb.toString()); con.disconnect(); + return response; } catch (MalformedURLException e) { @@ -213,6 +233,7 @@ public class LoginActivity extends ActionBarActivity { Toast.makeText(getActivity(), getActivity().getString(R.string.auth_err), Toast.LENGTH_LONG).show(); break; case 200: + case 307: this.context.startActivity(new Intent(this.context, DashboardMainActivity.class)); getActivity().overridePendingTransition(R.anim.abc_slide_in_bottom, R.anim.abc_slide_out_top); getActivity().finish();
