从Webservices android获取数据(登录,注册)

时间:2015-10-05 06:40:41

标签: android json web-services

我正在开发Android应用程序;注册用户并使用网络服务向注册用户提供服务......

现在如何使用我的应用注册用户?...这是服务代码。

Web服务:

{"USERDETAIL DETAIL":[{"post":{"id":"42","fname":"hanif","lname":"khan","address":"Dhok Saiydan Road, Rawalpindi City, Pakistan","cellno":"1234","phone":"23444","email":"hukhan.surrani@gmail.com","experience":"6 year","category":"Auto","subcategory":"Auto Painting","password":"123","latitude":"33.570858","longitude":"73.048553","dated":"2015-09-11 12:10:23","last_loggedin":"2015-10-02 05:56:08","status":"1","last_profile_updated":"0000-00-00 00:00:00","active_code":"0","profile_image":"1441969837test.png"}}

3 个答案:

答案 0 :(得分:1)

这取决于您的服务器端,我建议使用Retrofit

等库

答案 1 :(得分:1)

尝试按照本教程,逐步提供登录和注册过程

http://www.androidhive.info/2012/01/android-login-and-registration-with-php-mysql-and-sqlite/

登录

public class LoginActivity extends Activity {
    private static final String TAG = RegisterActivity.class.getSimpleName();
    private Button btnLogin;
    private Button btnLinkToRegister;
    private EditText inputEmail;
    private EditText inputPassword;
    private ProgressDialog pDialog;
    private SessionManager session;
    private SQLiteHandler db;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        inputEmail = (EditText) findViewById(R.id.email);
        inputPassword = (EditText) findViewById(R.id.password);
        btnLogin = (Button) findViewById(R.id.btnLogin);
        btnLinkToRegister = (Button) findViewById(R.id.btnLinkToRegisterScreen);

        // Progress dialog
        pDialog = new ProgressDialog(this);
        pDialog.setCancelable(false);

        // SQLite database handler
        db = new SQLiteHandler(getApplicationContext());

        // Session manager
        session = new SessionManager(getApplicationContext());

        // Check if user is already logged in or not
        if (session.isLoggedIn()) {
            // User is already logged in. Take him to main activity
            Intent intent = new Intent(LoginActivity.this, MainActivity.class);
            startActivity(intent);
            finish();
        }

        // Login button Click Event
        btnLogin.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {
                String email = inputEmail.getText().toString().trim();
                String password = inputPassword.getText().toString().trim();

                // Check for empty data in the form
                if (!email.isEmpty() && !password.isEmpty()) {
                    // login user
                    checkLogin(email, password);
                } else {
                    // Prompt user to enter credentials
                    Toast.makeText(getApplicationContext(),
                            "Please enter the credentials!", Toast.LENGTH_LONG)
                            .show();
                }
            }

        });

        // Link to Register Screen
        btnLinkToRegister.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {
                Intent i = new Intent(getApplicationContext(),
                        RegisterActivity.class);
                startActivity(i);
                finish();
            }
        });

    }

    /**
     * function to verify login details in mysql db
     * */
    private void checkLogin(final String email, final String password) {
        // Tag used to cancel the request
        String tag_string_req = "req_login";

        pDialog.setMessage("Logging in ...");
        showDialog();

        StringRequest strReq = new StringRequest(Method.POST,
                AppConfig.URL_LOGIN, new Response.Listener<String>() {

            @Override
            public void onResponse(String response) {
                Log.d(TAG, "Login Response: " + response.toString());
                hideDialog();

                try {
                    JSONObject jObj = new JSONObject(response);
                    boolean error = jObj.getBoolean("error");

                    // Check for error node in json
                    if (!error) {
                        // user successfully logged in
                        // Create login session
                        session.setLogin(true);

                        // Now store the user in SQLite
                        String uid = jObj.getString("uid");

                        JSONObject user = jObj.getJSONObject("user");
                        String name = user.getString("name");
                        String email = user.getString("email");
                        String created_at = user
                                .getString("created_at");

                        // Inserting row in users table
                        db.addUser(name, email, uid, created_at);

                        // Launch main activity
                        Intent intent = new Intent(LoginActivity.this,
                                MainActivity.class);
                        startActivity(intent);
                        finish();
                    } else {
                        // Error in login. Get the error message
                        String errorMsg = jObj.getString("error_msg");
                        Toast.makeText(getApplicationContext(),
                                errorMsg, Toast.LENGTH_LONG).show();
                    }
                } catch (JSONException e) {
                    // JSON error
                    e.printStackTrace();
                    Toast.makeText(getApplicationContext(), "Json error: " + e.getMessage(), Toast.LENGTH_LONG).show();
                }

            }
        }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e(TAG, "Login Error: " + error.getMessage());
                Toast.makeText(getApplicationContext(),
                        error.getMessage(), Toast.LENGTH_LONG).show();
                hideDialog();
            }
        }) {

            @Override
            protected Map<String, String> getParams() {
                // Posting parameters to login url
                Map<String, String> params = new HashMap<String, String>();
                params.put("email", email);
                params.put("password", password);

                return params;
            }

        };

        // Adding request to request queue
        AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
    }

    private void showDialog() {
        if (!pDialog.isShowing())
            pDialog.show();
    }

    private void hideDialog() {
        if (pDialog.isShowing())
            pDialog.dismiss();
    }
}

注册

public class RegisterActivity extends Activity {
    private static final String TAG = RegisterActivity.class.getSimpleName();
    private Button btnRegister;
    private Button btnLinkToLogin;
    private EditText inputFullName;
    private EditText inputEmail;
    private EditText inputPassword;
    private ProgressDialog pDialog;
    private SessionManager session;
    private SQLiteHandler db;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);

        inputFullName = (EditText) findViewById(R.id.name);
        inputEmail = (EditText) findViewById(R.id.email);
        inputPassword = (EditText) findViewById(R.id.password);
        btnRegister = (Button) findViewById(R.id.btnRegister);
        btnLinkToLogin = (Button) findViewById(R.id.btnLinkToLoginScreen);

        // Progress dialog
        pDialog = new ProgressDialog(this);
        pDialog.setCancelable(false);

        // Session manager
        session = new SessionManager(getApplicationContext());

        // SQLite database handler
        db = new SQLiteHandler(getApplicationContext());

        // Check if user is already logged in or not
        if (session.isLoggedIn()) {
            // User is already logged in. Take him to main activity
            Intent intent = new Intent(RegisterActivity.this,
                    MainActivity.class);
            startActivity(intent);
            finish();
        }

        // Register Button Click event
        btnRegister.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                String name = inputFullName.getText().toString().trim();
                String email = inputEmail.getText().toString().trim();
                String password = inputPassword.getText().toString().trim();

                if (!name.isEmpty() && !email.isEmpty() && !password.isEmpty()) {
                    registerUser(name, email, password);
                } else {
                    Toast.makeText(getApplicationContext(),
                            "Please enter your details!", Toast.LENGTH_LONG)
                            .show();
                }
            }
        });

        // Link to Login Screen
        btnLinkToLogin.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {
                Intent i = new Intent(getApplicationContext(),
                        LoginActivity.class);
                startActivity(i);
                finish();
            }
        });

    }

    /**
     * Function to store user in MySQL database will post params(tag, name,
     * email, password) to register url
     * */
    private void registerUser(final String name, final String email,
                              final String password) {
        // Tag used to cancel the request
        String tag_string_req = "req_register";

        pDialog.setMessage("Registering ...");
        showDialog();

        StringRequest strReq = new StringRequest(Method.POST,
                AppConfig.URL_REGISTER, new Response.Listener<String>() {

            @Override
            public void onResponse(String response) {
                Log.d(TAG, "Register Response: " + response.toString());
                hideDialog();

                try {
                    JSONObject jObj = new JSONObject(response);
                    boolean error = jObj.getBoolean("error");
                    if (!error) {
                        // User successfully stored in MySQL
                        // Now store the user in sqlite
                        String uid = jObj.getString("uid");

                        JSONObject user = jObj.getJSONObject("user");
                        String name = user.getString("name");
                        String email = user.getString("email");
                        String created_at = user
                                .getString("created_at");

                        // Inserting row in users table
                        db.addUser(name, email, uid, created_at);

                        Toast.makeText(getApplicationContext(), "User successfully registered. Try login now!", Toast.LENGTH_LONG).show();

                        // Launch login activity
                        Intent intent = new Intent(
                                RegisterActivity.this,
                                LoginActivity.class);
                        startActivity(intent);
                        finish();
                    } else {

                        // Error occurred in registration. Get the error
                        // message
                        String errorMsg = jObj.getString("error_msg");
                        Toast.makeText(getApplicationContext(),
                                errorMsg, Toast.LENGTH_LONG).show();
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }
        }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e(TAG, "Registration Error: " + error.getMessage());
                Toast.makeText(getApplicationContext(),
                        error.getMessage(), Toast.LENGTH_LONG).show();
                hideDialog();
            }
        }) {

            @Override
            protected Map<String, String> getParams() {
                // Posting params to register url
                Map<String, String> params = new HashMap<String, String>();
                params.put("name", name);
                params.put("email", email);
                params.put("password", password);

                return params;
            }

        };

        // Adding request to request queue
        AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
    }

    private void showDialog() {
        if (!pDialog.isShowing())
            pDialog.show();
    }

    private void hideDialog() {
        if (pDialog.isShowing())
            pDialog.dismiss();
    }
}

答案 2 :(得分:1)

然后尝试创建这个json的POJO类

{
"USERDETAIL DETAIL": [
    {
        "post": {
            "id": "42",
            "fname": "hanif",
            "lname": "khan",
            "address": "Dhok Saiydan Road, Rawalpindi City, Pakistan",
            "cellno": "1234",
            "phone": "23444",
            "email": "hukhan.surrani@gmail.com",
            "experience": "6 year",
            "category": "Auto",
            "subcategory": "Auto Painting",
            "password": "123",
            "latitude": "33.570858",
            "longitude": "73.048553",
            "dated": "2015-09-11 12:10:23",
            "last_loggedin": "2015-10-02 05:56:08",
            "status": "1",
            "last_profile_updated": "0000-00-00 00:00:00",
            "active_code": "0",
            "profile_image": "1441969837test.png"
        }
      }
   ]
 }

即。 AppUser.java

  

注意 - 尝试更改&#34; USERDETAIL DETAIL&#34;至   &#34; userdetail&#34;

import java.util.List;

/**
 * Created by Angad Tiwari on 10/5/15.
*/
public class AppUsers {
/**
 * userdetail : [{"post":{"id":"42","fname":"hanif","lname":"khan","address":"Dhok Saiydan Road, Rawalpindi City, Pakistan","cellno":"1234","phone":"23444","email":"hukhan.surrani@gmail.com","experience":"6 year","category":"Auto","subcategory":"Auto Painting","password":"123","latitude":"33.570858","longitude":"73.048553","dated":"2015-09-11 12:10:23","last_loggedin":"2015-10-02 05:56:08","status":"1","last_profile_updated":"0000-00-00 00:00:00","active_code":"0","profile_image":"1441969837test.png"}}]
 */

private List<UserdetailEntity> userdetail;

public void setUserdetail(List<UserdetailEntity> userdetail) {
    this.userdetail = userdetail;
}

public List<UserdetailEntity> getUserdetail() {
    return userdetail;
}

public static class UserdetailEntity {
    /**
     * post : {"id":"42","fname":"hanif","lname":"khan","address":"Dhok Saiydan Road, Rawalpindi City, Pakistan","cellno":"1234","phone":"23444","email":"hukhan.surrani@gmail.com","experience":"6 year","category":"Auto","subcategory":"Auto Painting","password":"123","latitude":"33.570858","longitude":"73.048553","dated":"2015-09-11 12:10:23","last_loggedin":"2015-10-02 05:56:08","status":"1","last_profile_updated":"0000-00-00 00:00:00","active_code":"0","profile_image":"1441969837test.png"}
     */

    private PostEntity post;

    public void setPost(PostEntity post) {
        this.post = post;
    }

    public PostEntity getPost() {
        return post;
    }

    public static class PostEntity {
        /**
         * id : 42
         * fname : hanif
         * lname : khan
         * address : Dhok Saiydan Road, Rawalpindi City, Pakistan
         * cellno : 1234
         * phone : 23444
         * email : hukhan.surrani@gmail.com
         * experience : 6 year
         * category : Auto
         * subcategory : Auto Painting
         * password : 123
         * latitude : 33.570858
         * longitude : 73.048553
         * dated : 2015-09-11 12:10:23
         * last_loggedin : 2015-10-02 05:56:08
         * status : 1
         * last_profile_updated : 0000-00-00 00:00:00
         * active_code : 0
         * profile_image : 1441969837test.png
         */

        private String id;
        private String fname;
        private String lname;
        private String address;
        private String cellno;
        private String phone;
        private String email;
        private String experience;
        private String category;
        private String subcategory;
        private String password;
        private String latitude;
        private String longitude;
        private String dated;
        private String last_loggedin;
        private String status;
        private String last_profile_updated;
        private String active_code;
        private String profile_image;

        public void setId(String id) {
            this.id = id;
        }

        public void setFname(String fname) {
            this.fname = fname;
        }

        public void setLname(String lname) {
            this.lname = lname;
        }

        public void setAddress(String address) {
            this.address = address;
        }

        public void setCellno(String cellno) {
            this.cellno = cellno;
        }

        public void setPhone(String phone) {
            this.phone = phone;
        }

        public void setEmail(String email) {
            this.email = email;
        }

        public void setExperience(String experience) {
            this.experience = experience;
        }

        public void setCategory(String category) {
            this.category = category;
        }

        public void setSubcategory(String subcategory) {
            this.subcategory = subcategory;
        }

        public void setPassword(String password) {
            this.password = password;
        }

        public void setLatitude(String latitude) {
            this.latitude = latitude;
        }

        public void setLongitude(String longitude) {
            this.longitude = longitude;
        }

        public void setDated(String dated) {
            this.dated = dated;
        }

        public void setLast_loggedin(String last_loggedin) {
            this.last_loggedin = last_loggedin;
        }

        public void setStatus(String status) {
            this.status = status;
        }

        public void setLast_profile_updated(String last_profile_updated) {
            this.last_profile_updated = last_profile_updated;
        }

        public void setActive_code(String active_code) {
            this.active_code = active_code;
        }

        public void setProfile_image(String profile_image) {
            this.profile_image = profile_image;
        }

        public String getId() {
            return id;
        }

        public String getFname() {
            return fname;
        }

        public String getLname() {
            return lname;
        }

        public String getAddress() {
            return address;
        }

        public String getCellno() {
            return cellno;
        }

        public String getPhone() {
            return phone;
        }

        public String getEmail() {
            return email;
        }

        public String getExperience() {
            return experience;
        }

        public String getCategory() {
            return category;
        }

        public String getSubcategory() {
            return subcategory;
        }

        public String getPassword() {
            return password;
        }

        public String getLatitude() {
            return latitude;
        }

        public String getLongitude() {
            return longitude;
        }

        public String getDated() {
            return dated;
        }

        public String getLast_loggedin() {
            return last_loggedin;
        }

        public String getStatus() {
            return status;
        }

        public String getLast_profile_updated() {
            return last_profile_updated;
        }

        public String getActive_code() {
            return active_code;
        }

        public String getProfile_image() {
            return profile_image;
        }
    }
}
}

现在..将你的json序列化为这个POJO对象

Gson gson=new Gson();
AppUsers appUsersObject=gson.fromJson(<your json>.toString(), AppUsers.class);
  

将Gson库添加到项目中

在Android工作室编译&#39; com.google.code.gson:gson:2.3.1&#39; 在eclipse gson.jar(谷歌和下载)

现在将UserdetailEntity对象添加到List userdetail;

PostEntity postEntity=new PostEntity();
postEntity.setId("newid"); // add all the attributes of postentity
UserdetailEntity userdetail=new UserdetailEntity();
userdetail.setPost(postEntity);
appUsersObject.getUserdetail().add(userdetail);

基本上,现在你必须处理这个&#34; appUsersObject&#34;而不是json字符串...因为你可以轻松处理这个对象..添加/删除/更新到这个对象,并通过会话在你的app中工作..

您可以将此AppUsers.java类创建为Singleton类