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()只允许调用一次,调用该方法后表示流已经关闭,所以取响应数据时应将该结果赋值到新的变量参数中