2015-05-22 70 views
0

我想要使用與Java應用程序中使用的相同的類,該應用程序通過PHP服務器使用Cookie機制。實際的類,在Java的偉大工程:如何在Java中存儲Cookie Android?

公共類連接{

private HttpURLConnection connection; 
private String username; 
private String password; 

public Connection(String username, String password) { 
    super(); 
    this.username = username; 
    this.password = password; 
    CookieHandler.setDefault(new CookieManager()); 
    login(); 
} 

public Connection() { 
    CookieHandler.setDefault(new CookieManager()); 
} 

public void setCredentials(String username, String password) { 
    this.username = username; 
    this.password = password; 
    login(); 

} 

public String login() { 
    String urlParameters = "username=" + username + "&password=" + password 
      + "&ac=log"; 
    return sendPost(
      my url.php", 
      urlParameters); 

} 

public String sendPost(String destination, String post) { 
    try { 
     URL url = new URL(destination); 
     connection = (HttpURLConnection) url.openConnection(); 
     connection.setRequestMethod("POST"); 
     connection.setDoInput(true); 
     connection.setDoOutput(true); 
     DataOutputStream wr = new DataOutputStream(
       connection.getOutputStream()); 

     wr.writeBytes(post); 
     wr.flush(); 
     wr.close(); 

     InputStream is = connection.getInputStream(); 
     BufferedReader rd = new BufferedReader(new InputStreamReader(is)); 
     String line; 
     StringBuffer response = new StringBuffer(); 
     while ((line = rd.readLine()) != null) { 
      response.append(line); 
      response.append('\r'); 
     } 
     rd.close(); 
     return response.toString(); 

    } catch (Exception e) { 

     return null; 

    } finally { 

     if (connection != null) { 
      connection.disconnect(); 
     } 
    } 
} 

}

下的Java,我能夠管理從服務器接收cookie的,沒有任何問題;在Android中,當我執行方法login()時,我獲得了一個新的PHPsession;那麼如何解決這個問題呢?我只想保持與Android和PHP服務器之間的認證連接。

回答

1

所以,據我所知,這個想法是存儲你從服務器收到的令牌。您可以使用下面的代碼將令牌保存爲共享首選項,並且每當您需要再次發出請求時,請閱讀令牌並使用該令牌簽名。

寫令牌到共享偏好:

SharedPreferences settings = context.getSharedPreferences(SHARED_PREFERENCES_NAME, 0); 
SharedPreferences.Editor editor = settings.edit(); 

editor.putString(ACCESS_TOKEN_STRING, token); 

/* Commit the edits */ 
editor.commit(); 

來讀取令牌:

SharedPreferences settings = context.getSharedPreferences(SHARED_PREFERENCES_NAME, 0); 
return settings.getString(ACCESS_TOKEN_STRING, ""); 
+0

這就是我認爲的解決方案,但我希望在Java代碼將工作,只要使用相同的碼。 –

+0

我之前沒有使用CookiHandler或CookieManager,不知道它是如何工作的。但它似乎在Android包中,所以它應該在Java中工作。 – osayilgan