OkHttp 使用调用(Call)来对发送 HTTP 请求和获取响应的过程进行抽象。代码清单 2中给出了使用 OkHttp 发送 HTTP 请求的基本示例。
1、创建一个 OkHttpClient 类的对象,该对象是使用 OkHttp 的入口。
2、创建的是表示 HTTP 请求的 Request 对象。通过 Request.Builder 这个构建帮助类可以快速的创建出 Request 对象。这里指定了 Request 的 url 为 http://www.baidu.com。
3、通过 OkHttpClient 的 newCall 方法来从 Request 对象中创建一个 Call 对象,再调用 execute 方法来执行该调用,所得到的结果是表示 HTTP 响应的 Response 对象。
4、通过 Response 对象中的不同方法可以访问响应的不同内容。如 headers 方法来获取 HTTP 头,body 方法来获取到表示响应主体内容的 ResponseBody 对象。
package com.java.http;
import java.io.IOException;
import com.squareup.okhttp.*;
public class SyncGet {
public static void main(String[] args) throws IOException {
//创建一个 OkHttpClient 类的对象,该对象是使用 OkHttp 的入口。
OkHttpClient client = new OkHttpClient();
/**
* 创建的是表示 HTTP 请求的 Request 对象。通过 Request.Builder 这个构建帮助类可以快速的创建出 Request 对象。
这里指定了 Request 的 url 为 http://www.baidu.com。
*/
Request request = new Request.Builder()
.url("http://www.csdn.net")
.build();
/**
* 通过 OkHttpClient 的 newCall 方法来从 Request 对象中创建一个 Call 对象,
* 再调用 execute 方法来执行该调用,所得到的结果是表示 HTTP 响应的 Response 对象。
*/
Response response = client.newCall(request).execute();
if (!response.isSuccessful()) {
throw new IOException("服务器响应失败: " + response);
}
/**
* 通过 Response 对象中的不同方法可以访问响应的不同内容。
* 如 headers 方法来获取 HTTP 头,body 方法来获取到表示响应主体内容的 ResponseBody 对象。
*/
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());
}
}