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.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)); Gson gson = new Gson(); ProvinceInfo provinceInfo = gson.fromJson(new String(arg2),ProvinceInfo.class); for (int i =0 ; i