okhttp 订阅
android网络框架之OKhttp一个处理网络请求的开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso) [1]  用于替代HttpUrlConnection和Apache HttpClient(android API23 6.0里已移除HttpClient,现在已经打不出来) 展开全文
android网络框架之OKhttp一个处理网络请求的开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso) [1]  用于替代HttpUrlConnection和Apache HttpClient(android API23 6.0里已移除HttpClient,现在已经打不出来)
信息
适用平台
android
是否开源
作    用
应用广泛的Android网络框架
中文名
okhttp
外文名
okhttp
作    者
Square公司
okhttp优势
允许连接到同一个主机地址的所有请求,提高请求效率 [2]  共享Socket,减少对服务器的请求次数 [2]  通过连接池,减少了请求延迟 [2]  缓存响应数据来减少重复的网络请求 [3]  减少了对数据流量的消耗 [2]  自动处理GZip压缩 [2] 
收起全文
精华内容
下载资源
问答
  • OkHttp

    2016-07-04 20:50:10
    OkHttp

    OkHttp简介

    http是现在主流应用使用的网络请求方式, 用来交换数据和内容, 有效的使用HTTP可以使你的APP 变的更快和减少流量的使用

    OkHttp 是一个很棒HTTP客户端:

    • 支持SPDY, 可以合并多个到同一个主机的请求
    • 使用连接池技术减少请求的延迟(如果SPDY是可用的话)
    • 使用GZIP压缩减少传输的数据量
    • 缓存响应避免重复的网络请求
    • 当你的网络出现拥挤的时候,就是OKHttp 大显身手的时候, 它可以避免常见的网络问题,如果你的服务是部署在不同的IP上面的,如果第一个连接失败, OkHTtp会尝试其他的连接. 这个对现在IPv4+IPv6 中常见的把服务冗余部署在不同的数据中心上. OkHttp 将使用现在TLS特性(SNI ALPN) 来初始化新的连接. 如果握手失败, 将切换到SLLv3

    使用OkHttp很容易, 同时支持异步阻塞请求和回调.

    如果你使用OkHttp ,你不用重写你的代码, okhttp-urlconnection模块实现了 java.net.HttpURLConnection 中的API, okhttp-apache模块实现了HttpClient中的API。

    疑问,什么是SPDY?

    SPDY(读作“SPeeDY”)是Google开发的基于TCP的应用层协议,用以最小化网络延迟,提升网络速度,优化用户的网络使用体验。SPDY并不是一种用于替代HTTP的协议,而是对HTTP协议的增强。新协议的功能包括数据流的多路复用、请求优先级以及HTTP报头压缩。
    谷歌表示,引入SPDY协议后,在实验室测试中页面加载速度比原先快64%。

    在studio中使用原生OkHttp

    1.在app 下的build.gradle中配置远程依赖

    dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile files('libs/gson-2.2.4.jar')
    compile files('libs/universal-image-loader-1.9.5.jar')
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'com.android.support:design:23.4.0'
    compile files('libs/xUtils-2.4.7.jar')
    compile project(':library')
    compile 'com.squareup.okhttp:okhttp:2.4.0'//添加
    compile 'com.squareup.okio:okio:1.5.0'//添加
    }

    2.在代码中使用

    get请求

     public void getColumnData() {
            OkHttpClient okHttpClient = new OkHttpClient();
    
    
            final Request request = new Request.Builder()
                    .url(JingBangApplication.HOST_ADDRESS + "/client/pms/programas.json")
    
                    .build();
    
            okHttpClient.newCall(request).enqueue(new Callback() {
                @Override
                public void onFailure(Request request, IOException e) {
                    LogUtil.d("ssssss", "请求失败--->" + request.body());
                }
    
                @Override
                public void onResponse(Response response) throws IOException {
    
                }
    
    
            });

    post请求

    
        public void getColumnData() {
            FormEncodingBuilder builder = new FormEncodingBuilder();
            builder.add("username","哈哈");
    
            OkHttpClient okHttpClient = new OkHttpClient();
    
    
            final Request request = new Request.Builder()
                    .url(JingBangApplication.HOST_ADDRESS + "/client/pms/programas.json")
                    .post(builder.build())
                    .build();
    
            okHttpClient.newCall(request).enqueue(new Callback() {
                @Override
                public void onFailure(Request request, IOException e) {
    
                }
    
                @Override
                public void onResponse(Response response) throws IOException {
    
    
                }
    
    
            });
        }

    • 注意:在回调的方法中response参数只能使用一次
    展开全文
  • okhttp

    2020-04-03 14:41:38
    okhttp链接 OkHttp 作为一个简洁高效的 HTTP 客户端,可以在 Java 和 Android 程序中使用。相对于 Apache HttpClient 来说,OkHttp 的性能更好,其 API 设计也更加简单实用。本文对 OkHttp 进行了详细的介绍,包括...

    okhttp链接
    OkHttp 作为一个简洁高效的 HTTP 客户端,可以在 Java 和 Android 程序中使用。相对于 Apache HttpClient 来说,OkHttp 的性能更好,其 API 设计也更加简单实用。本文对 OkHttp 进行了详细的介绍,包括同步和异步调用、HTTP GET 和 POST 请求处理、用户认证、响应缓存和拦截器等。对于新开发的 Java 应用,推荐使用 OkHttp 作为 HTTP 客户端。

    展开全文
  • OKHttp

    2020-09-12 17:37:34
    当网络出现拥挤的时候,使用OKHttp可以避免常见的网络问题,如果服务器配端置了多个IP地址,当第一个IP连接失败的时候,OkHttp会自动尝试下一个IP。对现在IPv4+IPv6 中常见的把服务冗余部署在不同的数据中心上,

    简介

    OkHttp是一个高效的HTTP库,它建立在HttpUrlConnection之上。OkHttp支持 SPDY ,共享同一个Socket来处理同一个服务器的所有请求,如果SPDY不可用,则通过连接池来减少请求延时;无缝的支持GZIP来减少数据流量;缓存响应数据来减少重复的网络请求;当网络出现拥挤的时候,使用OKHttp可以避免常见的网络问题,如果服务器配端置了多个IP地址,当第一个IP连接失败的时候,OkHttp会自动尝试下一个IP。对现在IPv4+IPv6 中常见的把服务冗余部署在不同的数据中心上,OkHttp 将使用现在TLS特性(SNI ALPN) 来初始化新的连接,如果连接失败,将切换到SLLv3;另外,OkHttp还处理了代理服务器问题和SSL连接失败的问题。

    小知识
    SPDY(读作“SPeeDY”)是Google开发的基于TCP的应用层协议,用以最小化网络延迟,提升网络速度,优化用户的网络使用体验。SPDY并不是一种用于替代HTTP的协议,而是对HTTP协议的增强。新协议的功能包括数据流的多路复用、请求优先级以及HTTP报头压缩。谷歌表示,引入SPDY协议后,在实验室测试中页面加载速度比原先快64%。

    OkHttp直接架构于Java Socket本身而没有依赖于其他第三方类库(如下图所示),因此开发者可以直接用在JVM中,而不仅仅是Android。为了简化代码迁移速度,OkHttp实现了类似于HttpUrlConnection与Apache Client的接口,比如:okhttp-urlconnection模块实现了 java.net.HttpURLConnection 中的API、okhttp-apache模块实现了HttpClient中的API。因此使用OkHttp重构之前的代码,基本上不需要再做大量的工作。
    在这里插入图片描述
    目前OkHttp支持如下特性:

    • 支持基于HTTP/2以及SPDY的多路复用
    • 支持连接池、会降低并发连接数
    • 透明GZIP加密减少传输的数据量
    • 响应缓存避免大量重复请求
    • 同时支持同步的阻塞式调用与异步回调式调用

    示例

    创建SpringBoot项目,添加依赖

    <dependency>
        <groupId>com.squareup.okhttp3</groupId>
        <artifactId>okhttp</artifactId>
        <version>4.8.1</version>
    </dependency>
    
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    

    服务器端代码

    @RestController
    public class DispatchController {
        @GetMapping("/get")
        public String get() {
            return "get";
        }
    
        @PostMapping("/post")
        public String post(String username,String password) {
            System.out.println(username+" : "+password);
            return "post";
        }
    
        @RequestMapping("/header")
        public String header(HttpServletRequest request, HttpServletResponse response) {
            Enumeration<String> headerNames = request.getHeaderNames();
            while (headerNames.hasMoreElements()) {
                String name = headerNames.nextElement();
                String value = request.getHeader(name);
                System.out.println(name + " : " + value);
            }
    
            response.setHeader("xxx", "13579");
            response.setHeader("yyy", "24680");
            return "header";
        }
    }
    

    OkHttp测试代码

    @SpringBootTest
    public class OkHttpTest {
        @Test
        public void get() throws IOException {
            OkHttpClient client = new OkHttpClient();
            Request request = new Request.Builder()
                    .url("http://localhost/od/get")
                    .method("GET", null)
                    .build();
            Response response = client.newCall(request).execute();
            if (response.isSuccessful()) {
                String res = response.body().string();
                System.out.println(res);
            } else {
                throw new IOException("Unexpected code " + response);
            }
        }
    
        @Test
        public void post() throws IOException {
            OkHttpClient client = new OkHttpClient().newBuilder().build();
            MediaType mediaType = MediaType.parse("text/plain");
            RequestBody body = RequestBody.Companion.create("", mediaType);
            String username = "lisi";
            String password = "123456";
            Request request = new Request.Builder()
                    .url("http://localhost/od/post?username=" + username + "&password=" + password)
                    .method("POST", body)
                    .build();
            Response response = client.newCall(request).execute();
            System.out.println(response.body().string());
            Headers headers = response.headers();
        }
    
        @Test
        public void header() throws IOException {
            OkHttpClient client = new OkHttpClient();
            Request request = new Request.Builder()
                    .url("http://localhost/od/header")
                    .addHeader("Xaa", "application/json; q=0.5")
                    .addHeader("Xbb", "application/vnd.github.v3+json")
                    .build();
            Response response = client.newCall(request).execute();
            if (response.isSuccessful()) {
                String res = response.body().string();
                System.out.println(res);
                Headers headers = response.headers();
                System.out.println(headers.get("xxx"));
                System.out.println(headers.get("yyy"));
            } else {
                throw new IOException("Unexpected code " + response);
            }
        }
    
    }
    
    展开全文
  • OKHTTP

    2019-08-04 20:14:03
    OKHTTP的下载和上传OKHTTP的简介OKHTTP的get请求的工具类OKHTTP的post请求的工具类 OKHTTP的简介 OKHTTP是一种第三方的网络下载工具,有get和post请求,一般get用来下载,post用来上传。一般是用来封装成工具类来...

    OKHTTP的简介

    OKHTTP是一种第三方的网络下载工具,有get和post请求,一般get用来下载,post用来上传。一般是用来封装成工具类来使用的。

    OKHTTP的get请求的工具类

        public void get(final Map<String,String> hashMap) {
            OkHttpClient client = new OkHttpClient.Builder().readTimeout(30, TimeUnit.SECONDS)
                    .connectTimeout(20,TimeUnit.SECONDS).build();
            final Request request = new Request.Builder().get().url(hashMap.get("data")).build();
    
            okhttp3.Call call = client.newCall(request);
            call.enqueue(new Callback() {
                @Override
                public void onFailure(okhttp3.Call call, IOException e) {
                    Log.i(TAG, "onFailure: "+"失败");
                }
    
                @Override
                public void onResponse(okhttp3.Call call, Response response) throws IOException {
                    Log.i(TAG, "onResponse: "+"开始下载");
                    String pase = "/sdcard/Music";
    
                    InputStream inputStream = response.body().byteStream();
                    int len = 0;
                    byte[] bytes = new byte[19];
                    FileOutputStream fileOutputStream = new FileOutputStream(new File(pase + "/" + hashMap.get("name")+".mp3"));
    
                    while ((len = inputStream.read(bytes)) != -1){
                        fileOutputStream.write(bytes);
                    }
                    Log.i(TAG, "onResponse: "+"下载完成!");
                }
            });
        }
    

    OKHTTP的post请求的工具类

        public void post(String urlStr, HashMap<String,String> hashMap){
            OkHttpClient client = new OkHttpClient.Builder().build();
    
            FormBody.Builder formBody = new FormBody.Builder();
            for (String key:hashMap.keySet()){
                formBody.add(key,hashMap.get(key));
            }
    
            MultipartBody.Builder builder = new MultipartBody.Builder();
            builder.setType(MultipartBody.FORM);
            builder.addFormDataPart("hh",hashMap.get("name")+".mp3",
                    RequestBody.create(MediaType.parse("media/mp3"),"/sdcard/"+hashMap.get("name")+".mp3"));
            MultipartBody body1 = builder.build();
    
            Request request = new Request.Builder().post(body1).url(urlStr).build();
    
            okhttp3.Call call = client.newCall(request);
            call.enqueue(new Callback() {
                @Override
                public void onFailure(okhttp3.Call call, IOException e) {
                    Log.i(TAG, "onFailure: "+"失败");
                }
    
                @Override
                public void onResponse(okhttp3.Call call, Response response) throws IOException {
                    String string = response.body().string();
                    Log.i(TAG, "onResponse: "+"成功"+string);
                }
            });
        }
    
    展开全文
  • okHttp

    2019-11-18 16:04:04
    gitHub地址: implementation("com.squareup.okhttp3:okhttp:4.2.2")
  • Okhttp

    千次阅读 2016-10-22 15:16:34
    1.OkHttp 简介 1)OkHttp 是一个更先进的专注于连接效率的 HTTP 客户端。OkHttp 提供了对 HTTP/2 和 SPDY 的支持,并提供了连接池,GZIP 压缩和 HTTP 响应缓存功能。OkHttp 的 API 接口也更加的简单实用,是一种...
  • Android OkHttp完全解析 是时候来了解OkHttp

    万次阅读 多人点赞 2015-08-24 15:36:45
    转载请标明出处: ...最近在群里听到各种讨论okhttp的话题,可见okhttp的口碑相当好了。再加上Google貌似在6.0版本里面删除了HttpClient相关API,对于这个行为不做评价。为了更好的在应对网络访问,学习
  • OKHttp使用简介

    万次阅读 多人点赞 2015-07-22 11:16:12
    现在android网络方面的第三方库很多,volley,Retrofit,OKHttp等,各有各自的特点,这边博客就来简单介绍下如何使用OKHttp。梗概OKHttp是一款高效的HTTP客户端,支持连接同一地址的链接共享同一个socket,通过连接...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 32,085
精华内容 12,834
关键字:

okhttp