RxJava + httpURLConnectionde 的简单测试demo,可以拿来处理一般的android访问网络的线程问题

来源:互联网 发布:tcl网络电视如何看直播 编辑:程序博客网 时间:2024/05/23 01:25

   //主要代码

Observable.create(new Observable.OnSubscribe<String>() {

            @Override
            public void call(Subscriber<? super String> subscriber) {
                String bitmap =HttpUtil.sendHttpRequest("","http://192.168.8.161:1111/api/Test/GetMatList7");
               try{ Thread.sleep(3000);}catch(Exception e){}
                subscriber.onNext(bitmap);
                subscriber.onCompleted();
                Log.e(" call ---> ", "运行在 " + Thread.currentThread().getName() + " 线程");
            }
        }).subscribeOn(Schedulers.newThread()) // 指定subscribe()发生在IO线程
                .observeOn(AndroidSchedulers.mainThread()) // 指定Subscriber的回调发生在UI线程
                .subscribe(new Subscriber<String>() {
                    @Override
                    public void onStart() {
                        super.onStart();
                       p.show();
                    }


                    @Override
                    public void onCompleted() {


                    }


                    @Override
                    public void onError(Throwable e) {


                    }


                    @Override
                    public void onNext(String s) {
                        p.dismiss();
                        Log.e(" call ---> ", "运行在 " + Thread.currentThread().getName() + " 线程");
                       // System.out.println(s);
                        Toast.makeText(MainActivity.this,s,Toast.LENGTH_SHORT).show();                 

                    }

                });

//util中的方法的写法

 public static String sendHttpRequest(final String str,final String address){

//通过 HttpURLConnection连接服务器第一个参数为传入的参数,第二个位url地址
                HttpURLConnection conn=null;
                try{
                    URL url = new URL(address);
                    conn=(HttpURLConnection) url.openConnection();
                    conn.setRequestMethod("POST");
                    conn.setConnectTimeout(8000);
                    conn.setReadTimeout(8000);
                    conn.setDoInput(true);
                    conn.setDoOutput(true);
                    conn.setRequestProperty("Content-Type",  "application/json");
                    DataOutputStream out = new DataOutputStream(conn.getOutputStream());
                    out.writeBytes(str);
                    out.flush();
                    InputStream in = conn.getInputStream();
                    BufferedReader reader = new BufferedReader(new InputStreamReader(in));
                    StringBuilder response = new StringBuilder();
                    String line;
                    while((line=reader.readLine())!=null){
                        response.append(line);
                    }
                       System.out.println(response.toString());
                        return  response.toString();
                }catch (Exception e){
                    System.out.println("异常是:"+e.getMessage());
                    e.getMessage();
                }finally {
                    if(conn!=null){
                        conn.disconnect();
                    }
                }
            return "仆街啦";


    }

原创粉丝点击