首页 > 编程 > Java > 正文

RxJava学习总结4

2019-11-09 13:51:55
字体:
来源:转载
供稿:网友

概述:

这次带来了一个实际案例的操作,利用Rxjava+OKHttp实现用户登录功能。

也是在开发中有实际作用价值的,在这里记录下。

JsonUtils.java:

public class JsonUtils {    /**     * @param json     * @return     */	 //用来检测reusltCode是否是错误码    public static boolean parserJson(String json) {        boolean flag = false;        try{            int result = new JSONObject(json).getJSONObject("result").getInt("resultCode");            if (result!=1){                flag = false;            }else{                flag = true;            }        }catch(JSONException e){           e.PRintStackTrace();        }        return flag;    }}LoginUtils.java:

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();//访问结束                       }                   });               }            }        });    }}MainActivity.java:

public class MainActivity extends ActionBarActivity {    private final String TAG = MainActivity.class.getSimpleName();    private Button button;    private EditText username;    private EditText passWord;    private ProgressDialog dialog;    private LoginUtils utils;    private final String LOGIN = "http://192.168.72.196:8080/webproject/LoginAction";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        button = (Button) this.findViewById(R.id.button);        username = (EditText) this.findViewById(R.id.editText);        dialog = new ProgressDialog(this);        dialog.setTitle("login......");        utils = new LoginUtils();        password = (EditText) this.findViewById(R.id.editText2);        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {				//将参数封装成Map集合                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 (JsonUtils.parserJson(s)){                           //Log.i(TAG,"success");                           Intent intent = new Intent(MainActivity.this,MainScreen.class);                           startActivity(intent);                       }                    }                });            }        });    }}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表