转载自:http://blog.youkuaiyun.com/qq_26562641/article/details/53639982
OKHttp是基于Http协议上的网络通讯,相较于HttpClinent,OKHttp就比较轻量级。
HTTP GET
private final static OkHttpClient client = new OkHttpClient();
private static void get() throws Exception {
String url = "http://www.baidu.com";
Request request = new Request.Builder()
.url(url)
.build();
Response response = client.newCall(request).execute();
if (response.isSuccessful()) {
String body = response.body().string();
System.out.println(body);
} else {
throw new IOException("Unexpected code " + response);
}
}
Request是OkHttp中访问的请求,Response即OkHttp中的响应,response.body()返回ResponseBody类,可以方便的获取body部分string,也可以通过byteStream()获取InputStream。
HTTP POST
private final static OkHttpClient client =
new OkHttpClient.Builder()
.connectTimeout(30, TimeUnit.SECONDS)
.build();
private static void post() throws Exception {
MediaType JSONTYPE = MediaType.parse("application/json; charset=utf-8");
String json = "";
String url = "";
RequestBody body = RequestBody.create(JSONTYPE, json);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
Response response = client.newCall(request).execute();
if (response.isSuccessful()) {
String bodyStr = response.body().string();
System.out.println(bodyStr);
} else {
throw new IOException("Unexpected code " + response);
}
}
上面例子通过MediaType设置可以提交Json数据,也可以发送键值对数据:
RequestBody formBody = new FormBody.Builder()
.add("platform", "android")
.add("name", "bug")
.add("subject", "XXXXXXXXXXXXXXX")
.build();
Request request = new Request.Builder()
.url(url)
.post(formBody)
.build();
Response response = client.newCall(request).execute();
关于OkHttp的更多用法,参考:http://www.cnblogs.com/ct2011/p/3997368.html