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();

Reply via email to