Android第三方HTTP网络支持包OkHttp的基础使用教程

Android第三方HTTP网络支持包OkHttp的基础使用教程,第1张

概述OkHttp包的设计和实现的首要目标是高效。这也是选择OkHttp的重要理由之一。OkHttp提供了对最新的HTTP协议版本HTTP/2和SPDY的支持,这使得对同一个主机发出的所有请求都可以共享相同的套接字连接。如果HTTP/2和SPDY不

Okhttp 包的设计和实现的首要目标是高效。这也是选择 Okhttp 的重要理由之一。Okhttp 提供了对最新的 http 协议版本 http/2 和 SPDY 的支持,这使得对同一个主机发出的所有请求都可以共享相同的套接字连接。如果 http/2 和 SPDY 不可用,Okhttp 会使用连接池来复用连接以提高效率。Okhttp 提供了对 GZIP 的默认支持来降低传输内容的大小。Okhttp 也提供了对 http 响应的缓存机制,可以避免不必要的网络请求。当网络出现问题时,Okhttp 会自动重试一个主机的多个 IP 地址。
(Okhttp的GitHub主页:https://github.com/square/okhttp)
http 客户端所要执行的任务很简单,接受 http 请求并返回响应。每个 http 请求包括 URL,http 方法(如 GET 或 POST),http 头和请求的主体内容等。http 请求的响应则包含状态代码(如 200 或 500),http 头和响应的主体内容等。虽然请求和响应的交互模式很简单,但在实现中仍然有很多细节要考虑。Okhttp 会对收到的请求进行一定的处理,比如增加额外的 http 头。同样的,Okhttp 也可能在返回响应之前对响应做一些处理。例如,Okhttp 可以启用 GZIP 支持。在发送实际的请求时,Okhttp 会加上 http 头 Accept-EnCoding。在接收到服务器的响应之后,Okhttp 会先做解压缩处理,再把结果返回。如果 http 响应的状态代码是重定向相关的,Okhttp 会自动重定向到指定的 URL 来进一步处理。Okhttp 也会处理用户认证相关的响应。

如何使用
1.gradle

compile 'com.squareup.okhttp:okhttp:2.4.0'

2.Initial
建议只要new一个实体做全部的 *** 作就行了

okhttpClIEnt = new OkhttpClIEnt();okhttpClIEnt.setConnectTimeout(30,TimeUnit.SECONDS);okhttpClIEnt.setReadTimeout(30,TimeUnit.SECONDS);

3.GET
Okhttp 使用调用(Call)来对发送 http 请求和获取响应的过程进行抽象。下面代码中给出了使用 Okhttp 发送 http 请求的基本示例。首先创建一个 OkhttpClIEnt 类的对象,该对象是使用 Okhttp 的入口。接着要创建的是表示 http 请求的 Request 对象。通过 Request.Builder 这个构建帮助类可以快速的创建出 Request 对象。这里指定了 Request 的 url 为 http://www.baIDu.com。接着通过 OkhttpClIEnt 的 newCall 方法来从 Request 对象中创建一个 Call 对象,再调用 execute 方法来执行该调用,所得到的结果是表示 http 响应的 Response 对象。通过 Response 对象中的不同方法可以访问响应的不同内容。如 headers 方法来获取 http 头,body 方法来获取到表示响应主体内容的 ResponseBody 对象。
Okhttp 最基本的 http 请求

public class SyncGet {  public static voID main(String[] args) throws IOException {  OkhttpClIEnt clIEnt = new OkhttpClIEnt();  Request request = new Request.Builder()      .url("http://www.baIDu.com")      .build();  Response response = clIEnt.newCall(request).execute();  if (!response.isSuccessful()) {    throw new IOException("服务器端错误: " + response);  }  headers responseheaders = response.headers();  for (int i = 0; i < responseheaders.size(); i++) {    System.out.println(responseheaders.name(i) + ": " + responseheaders.value(i));  }  System.out.println(response.body().string());  }}

4.POST
有了上面GET的基础,我们直接顺便来看POST:

builde RequestbodyRequestbody formBody = new FormEnCodingBuilder()  .add("name","Cuber")  .add("age","26")  .build();Request request = new Request.Builder()   .url(url)   .post(Requestbody)   .build();

5.Send
把上面build出来的Request带进来

Response response = clIEnt.newCall(request).execute();//如果response回传是null,就代表timeout或没有网络

或是你想使用Callback...
Response response = clIEnt.newCall(request).enqueue(new Callback() {  @OverrIDe  public voID onFailure(Request request,IOException e) {    //timeout或 没有网络     //注意!这里是backgroundThread  }  @OverrIDe    public voID onResponse(Response response) throws IOException {    //成功    //注意!这里是backgroundThread  }});

总结

以上是内存溢出为你收集整理的Android第三方HTTP网络支持包OkHttp的基础使用教程全部内容,希望文章能够帮你解决Android第三方HTTP网络支持包OkHttp的基础使用教程所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1148869.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存