Okhttp框架的使用

来源:互联网 发布:淘宝宠物店推荐 编辑:程序博客网 时间:2024/05/21 21:41

//添加的权限

<uses-permission android:name="android.permission.INTERNET"/>


//主Activity

/**
 * okhttp请求步骤:
 * 1.创建okhttpClient对象
 * 2.创建Request请求
 * 3.执行请求(把请求转换成一个任务,执行任务)
 */
public class MainActivity extends AppCompatActivity {
    ImageView imageView;






    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imageView = (ImageView) findViewById(R.id.imageView);




    }


    public void onClick(View view) {
        switch (view.getId()){
            case R.id.get_btn:
                getNetString();
                break;
            case R.id.post_btn:
                postNetString();
                break;
            case R.id.img_btn:
                getImagBitmap();
                break;
        }






    }

//主要执行的步骤

    private void getImagBitmap() {
        OkHttpClient client = new OkHttpClient();


        Request request = new Request.Builder()
                .url("http://pic.nipic.com/2008-05-26/200852684031634_2.jpg")
                .build();
        Call call = client.newCall(request);
        call.enqueue(new Callback() {

//重写的方法
            @Override
            public void onFailure(Call call, IOException e) {


            }


//得到成功的返回内容自己解析
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                byte[] bytes = response.body().bytes();
                final Bitmap bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);


                //相当于Handler.post(Runnable对象),此方法在Activity中调用
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        imageView.setImageBitmap(bmp);
                    }
                });




            }
        });




    }


    private void postNetString() {
        /**
         * String baseUrl = http://mrobot.pcauto.com.cn/v2/cms/channels/1?


         post提交的字段:pageNo=1&pageSize=20&serialIds=2143,3404&v=4.0.0
         */
        OkHttpClient client =new OkHttpClient();


        //提交给服务器的请求体内容
        RequestBody body =new FormBody.Builder()
                .add("pageNo","1")
                .add("pageSize","20")
                .add("serialIds","2143,3404")
                .add("v","4.0.0")
                .build();
        Request request
                = new Request.Builder()
                .url("http://mrobot.pcauto.com.cn/v2/cms/channels/1?")
                .post(body)
                .build();
        Call call = client.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {


            }


            @Override
            public void onResponse(Call call, Response response) throws IOException {
                Log.e("sxl","==onResponse==="+response.body().string());
            }
        });






    }


    public void getNetString() {
        OkHttpClient okHttpClient = new OkHttpClient();
        //请求携带地址(默认是get请求) 获得请求
        Request request = new Request.Builder()
                .url("http://a121.baopiqi.com/api/mh/getVideoClassification.php?&appname=%E7%88%B1%E6%83%85%E6%BC%AB%E7%94%BB%E7%B2%BE%E9%80%89&pkgname=com.platform.cartoonl&imei=863191020203140&versionname=1.2.7&page=0&limit=12")
                //                         .url("http://mrobot.pcauto.com.cn/v2/cms/channels/1?pageNo=1&pageSize=20&serialIds=2143,3404&v=4.0.0")
                .build();
        //一个Call就是一个任务
        Call call = okHttpClient.newCall(request);
        //同步:同一时刻只有一个任务在进行  execute()
        //异步:同一时刻多个任务在执行  enqueue()
       call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {


            }
            //请求成功
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                Log.e("sxl", "===响应的结果==" + response.body().string());
          }
        });




    }




}