添加依赖
compile 'com.squareup.okhttp3:okhttp:3.3.1'
Http Get
以异步的方式执行请求
private void requestHttp1() {
//请求的网络地址
String url = "https://www.baidu.com/";
//创建OkHttp客户端实例
OkHttpClient mOkHttpClient = new OkHttpClient();
//创建请求
Request request = new Request
.Builder()
.url(url)
.build();
//获取Call对象
Call call = mOkHttpClient.newCall(request);
//以异步的方式执行请求
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
//编写请求失败后的逻辑
}
@Override
public void onResponse(Call call, Response response) throws IOException {
//读取返回的数据
String htmlSrc = response.body().string();
}
});
}
以同步的方式执行请求
private void requestHttp2() {
//请求的网络地址
String url = "https://www.baidu.com/";
//创建OkHttp客户端实例
OkHttpClient mOkHttpClient = new OkHttpClient();
//创建请求
Request request = new Request
.Builder()
.url(url)
.build();
//获取Call对象
Call call = mOkHttpClient.newCall(request);
//以同步的方式执行请求
try {
Response response = call.execute();
if (response.isSuccessful()) {
//读取返回的数据
String htmlSrc = response.body().string();
}
} catch (IOException e) {
e.printStackTrace();
}
}
更多的时候写成这样:
//请求的网络地址
String url = "https://www.baidu.com/";
//创建OkHttp客户端实例
OkHttpClient mOkHttpClient = new OkHttpClient();
//以同步的方式执行请求
String run (String url) throws IOException {
Request request = new Request
.Builder()
.url(url)
.build();
Response response = mOkHttpClient.newCall(request).execute();
if (response.isSuccessful()) {
//读取返回的数据
String htmlSrc = response.body().string();
return htmlSrc;
} else {
throw new IOException("Unexpected code.");
}
}
Http Post(JSON)
//要Post的数据类型
public static final MediaType JSON
= MediaType.parse("application/json; charset=utf-8");
//创建OkHttp客户端实例
OkHttpClient client = new OkHttpClient();
//以同步的方式执行Post请求
String post(String url,String json) throws IOException {
RequestBody body = RequestBody.create(JSON, json);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
Response response = client.newCall(request).execute();
return response.body().string();
}