OKHTTP

//Get请求
OkHttpClient mOkHttpClient = new OkHttpClient();
        final Request request = new Request.Builder().url("http://qxu1649250094.my3w.com/ssuo.php?ssuo=").build();
        Call call = mOkHttpClient.newCall(request);
        call.enqueue(new com.squareup.okhttp.Callback() {
            @Override
            public void onFailure(Request request, IOException e) {


            }


            @Override
            public void onResponse(Response response) throws IOException {


            }
        });


//POST请求


        OkHttpClient mOkHttpClient = new OkHttpClient();


        FormEncodingBuilder builder=new FormEncodingBuilder();
        builder.add("Table","sview1").add("Pass","123");


        RequestBody body=builder.build();


        final Request request = new Request.Builder().url("http://qxu1649250094.my3w.com/ssuo.php?ssuo=").post(body).build();


        Call call = mOkHttpClient.newCall(request);
        call.enqueue(new com.squareup.okhttp.Callback() {
            @Override
            public void onFailure(Request request, IOException e) {


            }


            @Override
            public void onResponse(Response response) throws IOException {


            }
        });
//文件下载


OkHttpClient mOkHttpClient = new OkHttpClient();


        final Request request = new Request.Builder().url("http://qxu1649250094.my3w.com/user.exe").build();


        Call call = mOkHttpClient.newCall(request);
        call.enqueue(new com.squareup.okhttp.Callback() {
            @Override
            public void onFailure(Request request, IOException e) {


            }


            @Override
            public void onResponse(Response response) throws IOException {
                byte[] bytes = new byte[8*1024];


                inputStream = response.body().byteStream();
                fos = openFileOutput("QQ.exe", MODE_APPEND);
                while ((length = inputStream.read(bytes)) != -1) {
                    fos.write(bytes, 0, length);
                }
                fos.flush();
                if (inputStream != null) {
                    inputStream.close();
                }
                if (fos != null) {
                    fos.close();
                }


            }
        });
### 功能特性 - **缓存功能**:OkHttp基于Http协议实现了缓存,不过默认是关闭状态。可在配置OkHttpClient时使用`OkHttpClient.Builder().cache(Cache(文件,大小)).build()`开启缓存功能 [^1]。 - **支持高级网络协议**:支持SPDY和HTTP2.0等更高级的网络协议。HTTP2.0是在SPDY基础上由IETF重新开发的,添加了更安全的SSL协议,而像volley等框架暂时不支持HTTP/2,这是OkHttp的一个优点 [^3]。 - **失败重连机制**:当发生异常且需要恢复时,可判断OkHttpClient是否支持失败重连机制。若不支持重连,则请求失败后不能重试;同时会处理协议错误、中断异常、SSL握手错误、certificate pinning错误等情况 [^2]。 ### 使用指南 开启缓存的示例代码如下: ```java import okhttp3.Cache; import okhttp3.OkHttpClient; import java.io.File; public class OkHttpCacheExample { public static void main(String[] args) { // 缓存文件 File cacheDirectory = new File("your_cache_directory"); // 缓存大小 long cacheSize = 10 * 1024 * 1024; // 10 MB Cache cache = new Cache(cacheDirectory, cacheSize); OkHttpClient client = new OkHttpClient.Builder() .cache(cache) .build(); } } ``` ### 最佳实践 - 在使用缓存时,合理设置缓存目录和缓存大小,避免占用过多的磁盘空间。 - 在处理异常时,根据实际情况判断是否支持失败重连机制,确保请求的可靠性。 - 由于OkHttp支持高级网络协议,在网络环境允许的情况下,优先使用HTTP2.0等协议以提高性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值