OkHttp官方使用教程

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());

}

}

异步Get请求(Asynchronous Get)

在工作线程下载文件,并在响应可读时进行回调,回调会在响应头准备就绪后开始进行。读取响应体时可能会阻塞当前线程。OkHttp目前不提供异步API来部分接收响应体。

private final OkHttpClient client = new OkHttpClient();

public void run() throws Exception {

Request request = new Request.Builder()

.url(“http://publicobject.com/helloworld.txt”)

.build();

client.newCall(request).enqueue(new Callback() {

@Override public void onFailure(Call call, IOException e) {

e.printStackTrace();

}

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

try (ResponseBody responseBody = response.body()) {

if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);

Headers responseHeaders = response.headers();

for (int i = 0, size = responseHeaders.size(); i < size; i++) {

System.out.println(responseHeaders.name(i) + ": " + responseHeaders.value(i));

}

System.out.println(responseBody.string());

}

}

});

}

提取响应头(Accessing Headers)

通常,HTTP标头的工作方式类似于Map<String, String>:每个字段都有一个值或者没有值。但是一些头文件允许多个值,比如Guava的Multimap。例如:HTTP响应提供多个Vary响应头。OkHttp的API让这两种情况都适用。

在写请求头的时候,使用header(name, value)来设置唯一的name、value。如果存在现有值,则在添加新值之前将它们删除。使用addHeader(name, value)来添加一个头,而不必删除已经存在的头。

在读取响应头时,使用header(name)返回最后一次出现的name、value。通常情况这也是唯一的。如果不存在任何值,那么header(name)将会返回null。如果要读取字段所对应的所有值,请使用headers(name),它会返回一个列表。

如果要获取所有的Header,Headers类支持按索引访问。

private final OkHttpClient client = new OkHttpClient();

public void run() throws Exception {

Request request = new Request.Builder()

.url(“https://api.github.com/repos/square/okhttp/issues”)

.header(“User-Agent”, “OkHttp Headers.java”)

.addHeader(“Accept”, “application/json; q=0.5”)

.addHeader(“Accept”, “application/vnd.github.v3+json”)

.build();

try (Response response = client.newCall(request).execute()) {

if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);

System.out.println("Server: " + response.header(“Server”));

System.out.println("Date: " + response.header(“Date”));

System.out.println("Vary: " + response.headers(“Vary”));

}

}

Post方式提交String(Posting a String)

使用HTTP POST提交请求到服务。本示例提交

  • 22
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值