Android http Post Войти - PullRequest
0 голосов
/ 26 июня 2011

Я пытаюсь войти на свой сайт через приложение для Android. Почему-то всегда что-то идет не так.

Вот структура входа в мой сайт:

  • Login.php - форма входа (имя пользователя & пароль)
  • Auth.php - страница авторизации (получает имя пользователя и пароль от страница - login.php (метод POST))

Я уже должен взаимодействовать с именем пользователя и паролем (EditText оба)

Как сделать вход в систему через приложение для Android?

вот мой текущий метод входа

private void login() {
    // Create a new HttpClient and Post Header
    HttpClient httpclient = new DefaultHttpClient();

    /* login.php returns true if username and password is equal to saranga */
    HttpPost httppost = new HttpPost("my auth.php file url");

    try {
        // Add user name and password
        String username = this.usernameField.getText();
        String password = this.passwordField.getText();

        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("username", username));
        nameValuePairs.add(new BasicNameValuePair("password", password));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));


        HttpResponse response = httpclient.execute(httppost);

    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Спасибо

Ответы [ 2 ]

2 голосов
/ 26 июня 2011

Одна проблема, которую я вижу, заключается в том, что вы делаете:

String username = this.usernameField.getText();
String password = this.passwordField.getText();

Предполагая, что usernameField и passwordField являются виджетами EditText, вы должны сделать:

String username = this.usernameField.getText().toString();
String password = this.passwordField.getText().toString();
1 голос
/ 26 июня 2011

Несколько дней назад у меня были похожие проблемы. Вы можете взглянуть на следующий код.

public class API {
// constants
private final   String      TAG             = "API";
private final   String      API_URL_SECURE          = "your url";
private final   String      API_URL         = "your url";
private static  API         instance;   

// data
private         HttpClient                  client;     
private             ClientConnectionManager         cm;
    private         HttpPost                post;     
private         HttpContext             httpContext;
private         HttpParams              params;

private API() {

    params      = new BasicHttpParams();
    httpContext = new BasicHttpContext();
    ConnManagerParams.setMaxTotalConnections(params, 300);
    HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);                          
    SchemeRegistry schemeRegistry = new SchemeRegistry();
    schemeRegistry.register( new Scheme("http", PlainSocketFactory.getSocketFactory(), 80) );

    cm          = new ThreadSafeClientConnManager(params, schemeRegistry);
    client      = new DefaultHttpClient(cm, params);                        

}


public static API getInstance(){
    if(instance == null){
        instance = new API();
        return instance;
    }
    else
        return instance;
}

private static String getCredentials(String userName, String password){     
    return Base64.encodeBytes((userName + ":" + password).getBytes());
}

private String makeRequest(String url, JSONObject json, String userName, String userPassword) {

    try {          
        post            = new HttpPost(url);                                           
        StringEntity en = new StringEntity(json.toString());    

        post.setEntity(en);
        post.setHeader("Accept", "application/json");
        post.setHeader("Content-type", "application/json");

        if(userName != null && userPassword != null)
            post.addHeader("Authorization","Basic "+ getCredentials(userName, userPassword));           

        HttpResponse responsePOST = client.execute(post, httpContext);  
        HttpEntity   resEntity    = responsePOST.getEntity();

        return EntityUtils.toString(resEntity);

    } catch (ClientProtocolException e) {
        e.printStackTrace();
        return null;
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    }
}

public synchronized String login(String user_name, String user_password){
    JSONObject json     = new JSONObject();
    JSONObject params   = new JSONObject();

    try {
        json.put("method", "log_in_user");
        params.put("user_name", user_name);
        params.put("user_pass", user_password);
        json.put("params", params);
        String result = makeRequest(API_URL_SECURE, json, user_name, user_password);
        return result;          
    }
    catch (JSONException e) {
        e.printStackTrace();
        return null;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...