HttpManager.java 17.4 KB
package com.hjx.personalcenter.http;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.Toast;

import com.google.gson.Gson;
import com.hjx.personalcenter.activity.LoginAndRegisterActivity;
import com.hjx.personalcenter.db.SaveParam;
import com.hjx.personalcenter.gson.GsonTool;
import com.hjx.personalcenter.model.CityInfo;
import com.hjx.personalcenter.model.CountyInfo;
import com.hjx.personalcenter.model.ProvinceInfo;
import com.hjx.personalcenter.util.DialogPermission;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.JsonHttpResponseHandler;
import com.loopj.android.http.RequestParams;

import org.apache.http.Header;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.message.BasicHeader;
import org.apache.http.protocol.HTTP;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.UnsupportedEncodingException;

public class HttpManager {
    private static HttpManager instance;
    private ProgressDialog mProgress = null;
    public static HttpManager getInstance() {
        if (instance == null) {
            instance = new HttpManager();
        }
        return instance;
    }


    //登录接口

    public void login(final String username, final String password, final Context mContext) {
        mProgress = DialogPermission.showProgress(mContext, null, "正在登录...",
                false, true, null);
        HttpClient.getInstance().addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
        HttpClient.getInstance().get(HttpUrl.loginUrl + "?username=" + username + "&password=" + password, new AsyncHttpResponseHandler() {
            @Override
            public void onSuccess(int arg0, Header[] arg1, byte[] arg2) {

                String str = new String(arg2);
                JSONObject jsonObject = null;
                try {
                    jsonObject = new JSONObject(new String(arg2));
                    String status = jsonObject.getString("status");
                    if (status.equals("100")) {
                        String access_token = jsonObject.getString("access_token");
                        String userId = jsonObject.getString("userId");
//                        //登录成功,保存登录数据并且获取个人信息
                        saveLoginInfo(mContext,username, password, access_token, "true", userId);
                        //HttpManager.getInstance().getuserinfo(username,mContext);

                    }else if (status.equals("200")) {
                        closeProgress();
                        Toast.makeText(mContext, "用户名不存在!", Toast.LENGTH_LONG).show();
                        return;
                    } else if(status.equals("204")){
                        closeProgress();
                        Toast.makeText(mContext, "密码错误!", Toast.LENGTH_LONG).show();
                    }else{
                        closeProgress();
                        Toast.makeText(mContext, "登录失败!请检查网络", Toast.LENGTH_LONG).show();



                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }


            }

            @Override
            public void onFailure(int arg0, Header[] arg1, byte[] arg2, Throwable arg3) {
                closeProgress();
                Toast.makeText(mContext, "请检查网络。。"+arg3 , Toast.LENGTH_LONG).show();
            }
        });
    }

    //注册接口
    public void register(final Context context, String username, String password, String smscode, String source, final Handler handler) {
        mProgress = DialogPermission.showProgress(context, null, "正在注册...",
                false, true, null);
        JSONObject jsonObject = new JSONObject();
        ByteArrayEntity entity = null;
        try {
            jsonObject.put(HttpKey.USERNAME, username);
            jsonObject.put(HttpKey.PASSWORD, password);
            jsonObject.put(HttpKey.SMSCODE, smscode);
            jsonObject.put(HttpKey.SOURCE, source);
            Log.e("test", "jsonObject" + jsonObject);
            entity = new ByteArrayEntity(jsonObject.toString().getBytes("UTF-8"));
            entity.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
        } catch (JSONException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        HttpClient.getInstance().addHeader("Accept", "*/*");
        HttpClient.getInstance().post(context, HttpUrl.registeredUrl, entity, "application/json", new JsonHttpResponseHandler() {
            @Override
            public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
                super.onSuccess(statusCode, headers, response);
                closeProgress();
                Log.e("test", "onSuccess" + response);
                Message msg = Message.obtain();
                msg.what = HttpCode.REGISTERED_SUCESS;
                msg.obj = response;
                handler.sendMessage(msg);

            }

            @Override
            public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {
                super.onFailure(statusCode, headers, throwable, errorResponse);
                closeProgress();
                Log.e("test", "onFailure" + errorResponse);
                Toast.makeText(context, "请检查网络。。", Toast.LENGTH_LONG).show();
            }

        });
    }

    //注册验证码
    public void authCode(final String type, final String mobile, final Handler handler, final Context mContext) {
        RequestParams params = new RequestParams();
        params.put(HttpKey.TYPE, type);
        params.put(HttpKey.MOBIL, mobile);
        HttpClient.getInstance().addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
        HttpClient.getInstance().post(HttpUrl.authCodedUrl, params, new JsonHttpResponseHandler() {

            @Override
            public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
                Log.e("test", "onSuccess-----" + response);
                Message msg = Message.obtain();
                msg.what = HttpCode.AUTHCODE_SUCESS;
                msg.obj = response;
                handler.sendMessage(msg);
            }

            @Override
            public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {
                Toast.makeText(mContext, "请检查网络。。" + errorResponse, Toast.LENGTH_LONG).show();
            }
        });
    }

    //验证码
    public void forgetauthCode(final String type, final String mobile, final Handler handler, final Context mContext) {
        RequestParams params = new RequestParams();
        params.put("type", type);
        params.put("mobile", mobile);
        HttpClient.getInstance().addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
        HttpClient.getInstance().post(HttpUrl.authCodedUrl, params, new JsonHttpResponseHandler() {

            @Override
            public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
                Log.e("test", "onSuccess-----" + response);
                Message msg = Message.obtain();
                msg.what = HttpCode.AUTHCODE_SUCESS1;
                msg.obj = response;
                handler.sendMessage(msg);
            }

            @Override
            public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {
                Toast.makeText(mContext, "请检查网络。。" + errorResponse, Toast.LENGTH_LONG).show();
            }
        });
    }

    //手机号是否注册
    public void isregistered(final String mobile, final Handler handler, final Context mContext) {
        RequestParams params = new RequestParams();
        params.put(HttpKey.USERNAME, mobile);
        HttpClient.getInstance().get(HttpUrl.isRegiterUrl + "?mobile=" + mobile, new JsonHttpResponseHandler() {
            @Override
            public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
                Log.e("test", "isregistered" + response.toString());
                Message msg = Message.obtain();
                msg.what = HttpCode.IS_REFISTER;
                msg.obj = response;
                handler.sendMessage(msg);

            }

            @Override
            public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {
                Toast.makeText(mContext, "失敗" + errorResponse, Toast.LENGTH_LONG).show();

            }
        });
    }

    //修改密码
    public void changepwd(final Context context, String username, String old_pwd1, String newpassword3) {
        RequestParams params = new RequestParams();
        params.put(HttpKey.USERNAME, username);
        params.put(HttpKey.OLDPASS, old_pwd1);
        params.put(HttpKey.NEWPASS, newpassword3);
        HttpClient.getInstance().addHeader("Accept", "*/*");
        HttpClient.getInstance().setTimeout(10 * 1000);
        HttpClient.getInstance().post(HttpUrl.changepassword, params, new AsyncHttpResponseHandler() {
            @Override
            public void onSuccess(int i, Header[] headers, byte[] bytes) {
                try {
                    JSONObject jsonObject = new JSONObject(new String(bytes));
                    String status = jsonObject.optString("status");
                    if (status.equals("100")) {
                        Log.e("test", "onSuccess" + new String(bytes));
                        Toast.makeText(context, "密码修改成功!", Toast.LENGTH_LONG).show();
                        SaveParam.getInstance().clearData((Activity) context);
                        Intent intent = new Intent();
                        intent.setClass(context, LoginAndRegisterActivity.class);
                        ((Activity) context).startActivity(intent);
                        ((Activity) context).finish();
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onFailure(int i, Header[] headers, byte[] bytes, Throwable throwable) {
                Log.e("test", "onFailure" + new String(bytes));
                Toast.makeText(context, "密码修改失败,请检查网络!", Toast.LENGTH_LONG).show();
                onFinish();
            }
        });

    }

    //忘记密码
    public void forgetpassword(final Context context, String forot_pwd_phone1, String forot_pwd_pwd3, String forot_pwd_anthcode1, Handler handler) {
        RequestParams params = new RequestParams();
        params.put(HttpKey.USERNAME, forot_pwd_phone1);
        params.put(HttpKey.PASSWORD, forot_pwd_pwd3);
        params.put(HttpKey.AUTHCODE, forot_pwd_anthcode1);
        HttpClient.getInstance().addHeader("Accept", "*/*");
        HttpClient.getInstance().post(HttpUrl.forgetpassword, params, new AsyncHttpResponseHandler() {
            @Override
            public void onSuccess(int i, Header[] headers, byte[] bytes) {
                try {
                    JSONObject jsonObject = new JSONObject(new String(bytes));
                    String status = jsonObject.optString("status");
                    if (status.equals("100")) {
                        Log.e("test", "onSuccess" + new String(bytes));
                        Toast.makeText(context, "密码修改成功!", Toast.LENGTH_LONG).show();
                        ((Activity) context).finish();
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onFailure(int i, Header[] headers, byte[] bytes, Throwable throwable) {
                Log.e("test", "onFailure" + new String(bytes));
                Toast.makeText(context, "忘记密码修改失败,请检查网络!", Toast.LENGTH_LONG).show();
            }
        });

    }

    //保存用户登录信息
    public void saveLoginInfo(Context context,String username, String password, String access_token, String loginStatus, String userId) {
        SaveParam.getInstance().saveLoginParam(context,"username", username);
        SaveParam.getInstance().saveLoginParam(context,"password", password);
        SaveParam.getInstance().saveLoginParam(context,"access_token", access_token);
        SaveParam.getInstance().saveLoginParam(context,"login", loginStatus);
        SaveParam.getInstance().saveLoginParam(context,"userId", userId);


    }

    //保存用户个人信息
    public void savePresonInfo(Context context,String lastname, String gender, String mobilePortrait) {
        SaveParam.getInstance().saveLoginParam(context,"lastname", lastname);
        SaveParam.getInstance().saveLoginParam(context,"gender", gender);
        SaveParam.getInstance().saveLoginParam(context,"mobilePortrait", mobilePortrait);
    }
///省级接口
    public void provices(final Context mContext) {
        HttpClient.getInstance().addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
        HttpClient.getInstance().get(HttpUrl.provinceUrl, new AsyncHttpResponseHandler() {
            @Override
            public void onSuccess(int arg0, Header[] arg1, byte[] arg2) {
                Log.e("test", "省" + new String(arg2));
                ProvinceInfo provinceInfo = GsonTool.getPerson(new String(arg2), ProvinceInfo.class);//解析json数据
                Log.e("test", "状态码" +provinceInfo.getStatus());
                StringBuffer sb = new StringBuffer();
                for (int i =0 ; i<provinceInfo.getProvinces().size();i++){
                    Log.e("test", "省" +provinceInfo.getProvinces().get(i)
                            .getParentId());
                    Log.e("test", "省" +provinceInfo.getProvinces().get(i)
                            .getRegionId());
                    Log.e("test", "省" +provinceInfo.getProvinces().get(i).getRegionName());
                    sb.append(provinceInfo.getProvinces().get(i).getRegionName()+",");

                }
                Log.e("test", "省" +sb.toString());
                SaveParam.getInstance().saveCustomizeParam(mContext,SaveParam.PROVINCES, "" + sb.toString());


            }

            @Override
            public void onFailure(int arg0, Header[] arg1, byte[] arg2, Throwable arg3) {
                Toast.makeText(mContext, "请检查网络。。"+arg3 , Toast.LENGTH_LONG).show();
            }
        });
    }
    //市级接口
    public void cityinfo(final Context mContext,int regionId) {
        HttpClient.getInstance().addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
        HttpClient.getInstance().get(HttpUrl.cityUrl + "?regionId=" + regionId, new AsyncHttpResponseHandler() {
            @Override
            public void onSuccess(int arg0, Header[] arg1, byte[] arg2) {
                Log.e("test", "市" + new String(arg2));
                Gson gson = new Gson();
                CityInfo cityInfo = gson.fromJson(new String(arg2),CityInfo.class);
                for (int i =0 ; i<cityInfo.getCities().size();i++){
                    Log.e("test", "市" +cityInfo.getCities().get(i)
                            .getParentId());
                    Log.e("test", "市" +cityInfo.getCities().get(i)
                            .getRegionId());
                    Log.e("test", "市" +cityInfo.getCities().get(i).getRegionName()+"");

                }


            }

            @Override
            public void onFailure(int arg0, Header[] arg1, byte[] arg2, Throwable arg3) {
                Toast.makeText(mContext, "请检查网络。。"+arg3 , Toast.LENGTH_LONG).show();
            }
        });
    }
    //区县级接口
    public void countyinfo(final Context mContext,int parentId) {
        HttpClient.getInstance().addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
        HttpClient.getInstance().get(HttpUrl.countyUrl + "?regionId=" + parentId, new AsyncHttpResponseHandler() {
            @Override
            public void onSuccess(int arg0, Header[] arg1, byte[] arg2) {
                Log.e("test", "区" + new String(arg2));
                Gson gson = new Gson();
                CountyInfo countyInfo = gson.fromJson(new String(arg2),CountyInfo.class);
                for (int i =0 ; i<countyInfo.getCounties().size();i++){
                    Log.e("test", "区" +countyInfo.getCounties().get(i)
                            .getParentId());
                    Log.e("test", "区" +countyInfo.getCounties().get(i)
                            .getRegionId());
                    Log.e("test", "区" +countyInfo.getCounties().get(i).getRegionName()+"");

                }


            }

            @Override
            public void onFailure(int arg0, Header[] arg1, byte[] arg2, Throwable arg3) {
                Toast.makeText(mContext, "请检查网络。。"+arg3 , Toast.LENGTH_LONG).show();
            }
        });
    }


    private void closeProgress() {
        try {
            if (mProgress != null) {
                mProgress.dismiss();
                mProgress = null;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}