Okhttp使用总结

添加依赖:compile 'com.squareup.okhttp3:okhttp:3.4.2'

一个简单的使用okhttp进行网络访问请求:

        //创建okhttpClient对象
        OkHttpClient mOkHttpClient = new OkHttpClient();
        //创建一个请求
        Request request = new Request.Builder()
                .url("http://www.baidu.com")
                .build();
        //创建一个Call
        Call call = mOkHttpClient.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.i("TAG",response.body().string());
            }
        });

//或者
try {
        Response response = mOkHttpClient.newCall(request).execute();
        response.body().string();
        } catch (IOException e) {
            e.printStackTrace();
        }
  1. 默认的是get请求方式,首先构造一个Request对象,参数最起码有个url,当然你可以通过Request.Builder设置更多的参数比如:header、method等等等等。
  2. 然后通过request的对象去构造得到一个Call对象,类似于将你的请求封装成了任务,既然是任务,就会有execute()和cancel()等方法
  3. 我们希望以异步的方式去执行请求,所以我们调用的是call.enqueue,将call加入调度队列,然后等待任务执行完成,我们在Callback中即可得到结果。

重要的是onResponse方法:

public void onResponse(Call call, Response response) 
//但是这个方法并不是在UI线程中执行了 所以如果想要更新UI的话还得通过其他的办法
@Override
            public void onResponse(Call call, Response response) throws IOException {
                Log.i("TAG",response.body().string());
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        //更新UI的操作
                    }
                });
            }

回调参数response,如果我们希望获得的结果是string就通过response.body().string()获取;如果我们希望获得返回值是二进制字节数组,则调用response.body().bytes();如果我们想要拿到返回的是inputStream则调用response.body().byteStream();

关于Post的方式
 //创建okhttpClient对象
        OkHttpClient mOkHttpClient = new OkHttpClient();
        //创建一个请求的内容
        RequestBody body  =new MultipartBody.Builder().addFormDataPart("obj_id","23")
                .addFormDataPart("obj_type","1")
                .addFormDataPart("page","2")
                .build();
        //创建一个请求
        Request request = new Request.Builder()
                .url("http://47.90.16.112/evidencebased/qtuktuk/common/get_comments")
                .post(body)
                .build();

        //创建一个Call
        Call call = mOkHttpClient.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Log.i("TAG","error");
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                Log.i("TAG",response.body().string());
            }
        });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用OkHttp3实现WebSocket的步骤如下: 首先,我们需要导入OkHttp的依赖库。可以通过在项目的build.gradle文件的dependencies块中添加以下代码来实现: implementation 'com.squareup.okhttp3:okhttp:3.14.0' 接下来,我们在代码中创建一个OkHttpClient实例,并使用它来建立WebSocket连接。例如: OkHttpClient client = new OkHttpClient(); // WebSocket连接地址 String url = "ws://example.com/socket"; // 创建WebSocket请求 Request request = new Request.Builder().url(url).build(); // 建立WebSocket连接 WebSocket webSocket = client.newWebSocket(request, new WebSocketListener() { @Override public void onOpen(WebSocket webSocket, Response response) { super.onOpen(webSocket, response); // 连接已经建立 Log.d("WebSocket", "连接已经建立"); } @Override public void onMessage(WebSocket webSocket, String text) { super.onMessage(webSocket, text); // 接收到消息 Log.d("WebSocket", "接收到消息:" + text); } @Override public void onClosed(WebSocket webSocket, int code, String reason) { super.onClosed(webSocket, code, reason); // 连接已关闭 Log.d("WebSocket", "连接已关闭"); } @Override public void onFailure(WebSocket webSocket, Throwable t, Response response) { super.onFailure(webSocket, t, response); // 连接失败 Log.d("WebSocket", "连接失败"); } }); 通过上述代码,我们使用OkHttpClient创建了一个WebSocket连接,建立连接时会调用onOpen方法,接收到消息时会调用onMessage方法,连接关闭时会调用onClosed方法,连接失败时会调用onFailure方法。 我们还可以通过WebSocket对象发送消息,例如: webSocket.send("Hello, WebSocket!"); 当我们不再需要WebSocket连接时,可以通过调用webSocket.close()方法来关闭连接。 总结来说,使用OkHttp3实现WebSocket非常方便,只需要创建OkHttpClient对象,根据WebSocket的生命周期处理不同的回调方法即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值