RxJava实战演示3----okhttp3表单提交

来源:互联网 发布:爬虫数据分析 编辑:程序博客网 时间:2024/06/05 03:59

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");页面跳转                       }                    }                });            }        });



0 0
原创粉丝点击