Autore Topic: Gestione Basic authentication ad un server  (Letto 470 volte)

Offline dr4gone

  • Utente junior
  • **
  • Post: 66
  • Respect: +1
    • Mostra profilo
Gestione Basic authentication ad un server
« il: 07 Marzo 2012, 18:41:54 CET »
0
Ciao a tutti..
Sto cercando di capire come fare ad autenticarmi ad un mio server che lavora con la basic authentication.

Cercando di capire come funziona la faccenda, ho tirato fuori questo:
Codice (Java): [Seleziona]
public class Login extends Activity {
    /** Called when the activity is first created. */
        private static final int    TIMEOUT    = 20000;
    private static final String mIpAddress = "http://mio server";
    private static final int    mPort      = 80;
    private static final String mSubPage   = "";
    EditText et_user;
    EditText et_pass;
    String user;
    String pass;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button btn = (Button) findViewById(R.id.RetrieveBtn);
        btn.setOnClickListener(new OnClickListener() {

            public void onClick(View arg0) {
                retrievePage();
            }

        });
    }

    private void retrievePage() {
        et_user = (EditText) findViewById(R.id.et_user);
                et_pass = (EditText) findViewById(R.id.et_pass);
                user = et_user.getText().toString();
        pass = et_pass.getText().toString();
        HttpURLConnection conn = null;
        try {
         
           
            URL url = new URL(String.format("http://%s:%d/%s", mIpAddress, mPort, mSubPage));
            conn = (HttpURLConnection) url.openConnection();
            String base64EncodedCredentials = Base64.encodeToString(
                (user + ":" + pass).getBytes("US-ASCII"), Base64.DEFAULT);
            conn.addRequestProperty("Authorization", "Basic " + base64EncodedCredentials);
            conn.setRequestMethod("GET");
            conn.setRequestProperty("Content-length", "0");
            conn.setUseCaches(false);
            conn.setAllowUserInteraction(false);
            conn.setConnectTimeout(TIMEOUT);
            conn.setReadTimeout(TIMEOUT);

           
            Authenticator.setDefault(new Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(user, pass.toCharArray());
                }
            });
            conn.connect();

            System.out.println(conn.getResponseCode());
            System.out.println(conn.getResponseMessage());

        } catch (MalformedURLException e) {
            // TODO: Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // Operation timed out.
            System.out.println(e.getMessage());
            e.printStackTrace();
        } finally {
            if (conn != null) {
                conn.disconnect();
                conn = null;
            }
        }
    }
}

Quello che mi ritorna è 200 e Ok, quindi il tutto dovrebbe essere andato bene.
Secondo voi è corretta una cosa del genere?

Se si come faccio per avere la certezza che mi sia loggato e visualizzo la pagina?
Devo fare un parsing?

Grazie