OkHttp官网地址:http://square.github.io/okhttp/
OkHttp GitHub地址:https://github.com/square/okhttp
参考:http://blog.csdn.net/iispring/article/details/51661195
1、POST form表单请求
final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
OkHttpClient okHttpClient = new OkHttpClient();
RequestBody requestBody = RequestBody.create(JSON, json);
Request request = new Request.Builder()
.url(url)
.post(requestBody)
.build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onResponse(Call arg0, Response arg1) throws IOException {
System.out.println("---------->"+arg1.body().string());
}
@Override
public void onFailure(Call arg0, IOException arg1) {
System.out.println("---------->"+arg1.getMessage());
}
});
2、POST读流的方式提交form表单
final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
OkHttpClient okHttpClient = new OkHttpClient();
RequestBody requestBody = new RequestBody() {
@Override
public MediaType contentType() {
return JSON;
}
@Override
public void writeTo(BufferedSink sink) throws IOException {
sink.writeUtf8(json.toString());
}
};
Request request = new Request.Builder()
.url(url)
.post(requestBody)
.build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onResponse(Call arg0, Response arg1) throws IOException {
System.out.println("---------->"+arg1.body().string());
}
@Override
public void onFailure(Call arg0, IOException arg1) {
System.out.println("---------->"+arg1.getMessage());
}
});
3、POST json格式请求
final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
OkHttpClient okHttpClient = new OkHttpClient();
RequestBody requestBody = RequestBody.create(JSON, json);
Request request = new Request.Builder()
.url(url)
.post(requestBody)
.build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onResponse(Call arg0, Response arg1) throws IOException {
System.out.println("-----uploadToken-onResponse----->"+arg1.body().string());
}
@Override
public void onFailure(Call arg0, IOException arg1) {
System.out.println("-----uploadToken-onFailure----->"+arg1.getMessage());
}
});
4、POST提交file
final MediaType JSON = MediaType.parse("text/x-markdown; charset=utf-8");
OkHttpClient okHttpClient = new OkHttpClient();
File file = null;
RequestBody requestBody = RequestBody.create(JSON, file);
Request request = new Request.Builder()
.url(url)
.post(requestBody)
.build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onResponse(Call arg0, Response arg1) throws IOException {
System.out.println("---------->"+arg1.body().string());
}
@Override
public void onFailure(Call arg0, IOException arg1) {
System.out.println("---------->"+arg1.getMessage());
}
});
5、POST提交file及键值对数据
final MediaType JSON = MediaType.parse("text/x-markdown; charset=utf-8");
OkHttpClient okHttpClient = new OkHttpClient();
File file = null;
RequestBody requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("key", "value")
.addFormDataPart("key", "fileName",RequestBody.create(JSON, file))
.build();
Request request = new Request.Builder()
.url(url)
.post(requestBody)
.build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onResponse(Call arg0, Response arg1) throws IOException {
System.out.println("---------->"+arg1.body().string());
}
@Override
public void onFailure(Call arg0, IOException arg1) {
System.out.println("---------->"+arg1.getMessage());
}
});
});
6、get请求
OkHttpClient okHttpClient = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
.get()
.build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onResponse(Call arg0, Response arg1) throws IOException {
System.out.println("---------->"+arg1.body().string());
}
@Override
public void onFailure(Call arg0, IOException arg1) {
System.out.println("---------->"+arg1.getMessage());
}
});
7、设置请求时间
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS)//请求连接时间
.writeTimeout(10, TimeUnit.SECONDS)//上传数据写入时间
.readTimeout(20, TimeUnit.SECONDS)//下载数据读取时间
.build();
8、注意事项
1、arg1.body().string()只允许调用一次,调用该方法后表示流已经关闭,所以取响应数据时应将该结果赋值到新的变量参数中