1.定义LoginUtils
public class LoginUtils {
private OkHttpClient client;
public LoginUtils() {
client = new OkHttpClient();
}
/**
* 定义了login操作,使用RxAndroid的编程思想
* @param url
* @param params
* @return
*/
public Observable<String> login(String url,Map<String,String> params){
return Observable.create(new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> subscriber) {
if (!subscriber.isUnsubscribed()){
FormBody.Builder builder = new FormBody.Builder();
if (params!=null&&!params.isEmpty()){
for(Map.Entry<String,String> entry:params.entrySet()){
builder.add(entry.getKey(),entry.getValue());
}
}
RequestBody requestBody = builder.build();
//构建post请求
Request request = new Request.Builder().url(url).post(requestBody).build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
subscriber.onError(e);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()){
subscriber.onNext(response.body().string());
}
subscriber.onCompleted();//访问结束
}
});
}
}
});
}
}
2.主页面调用
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Map<String, String> params = new HashMap<String, String>();
params.put("username", username.getText().toString().trim());
params.put("password", password.getText().toString().trim());
utils.login(LOGIN, params).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Subscriber<String>() {
@Override
public void onCompleted() {
// dialog.dismiss();
}
@Override
public void onError(Throwable e) {
Log.i(TAG, e.getMessage());
}
@Override
public void onNext(String s) {
dialog.show();
// Log.i(TAG,s);
if (new JSONObject(json).getJSONObject("result").getInt("resultCode")==1){
//Log.i(TAG,"success");页面跳转
}
}
});
}
});