Okhttp get异步请求数据


 /**
     * post和get都有同步和异步的方式.....区别就在于call调用的方法不同
     * @param view
     */



        OkHttpClient okHttpClient = new OkHttpClient();


        final Request request = new Request.Builder()
                .url("https://www.zhaoapi.cn/ad/getAd")
                .build();


        Call call = okHttpClient.newCall(request);


        //指定call调用的方式
        call.enqueue(new Callback() {
            //失败
            @Override
            public void onFailure(Call call, IOException e) {
                //打印异常的日志
                e.printStackTrace();
            }


            //服务器有响应....这个位置仍然是工作线程
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (response.isSuccessful()){


                    //response.body().string();


                    //java.lang.IllegalStateException: closed 非法状态异常:关闭...本次请求已经响应,,,关闭
                    Log.i("------",response.body().string());


                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Toast.makeText(MainActivity.this,"请求成功",Toast.LENGTH_SHORT).show();
                        }
                    });


                }
            }
        });
使用OkHttp发送异步请求的步骤如下: 1. 导入OkHttp库 在项目的build.gradle中添加以下依赖: ``` dependencies { implementation 'com.squareup.okhttp3:okhttp:4.9.0' } ``` 2. 创建OkHttp请求对象 OkHttp的请求对象是Request类,可以根据需求设置请求方式、请求头等信息。例如: ``` Request request = new Request.Builder() .url("http://www.example.com") .build(); ``` 3. 创建OkHttpClient对象 OkHttpClient是OkHttp的核心类,需要通过它来发送请求。一般我们只需要创建一个OkHttpClient对象即可,可以使用单例模式。例如: ``` private static OkHttpClient okHttpClient; public static synchronized OkHttpClient getOkHttpClient() { if (okHttpClient == null) { okHttpClient = new OkHttpClient(); } return okHttpClient; } ``` 4. 发送异步请求 使用OkHttpClient的newCall方法创建一个Call对象,然后调用enqueue方法发送异步请求。例如: ``` OkHttpClient okHttpClient = getOkHttpClient(); Request request = new Request.Builder() .url("http://www.example.com") .build(); Call call = okHttpClient.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { // 异常处理 } @Override public void onResponse(Call call, Response response) throws IOException { // 响应处理 } }); ``` 在回调方法中,onFailure方法会在请求失败时调用,onResponse方法会在请求成功并得到响应时调用。响应结果可以通过response.body().string()方法获取。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值