okhttp的使用

xiaoxiao2021-02-28  94

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

 

 

转载请注明原文地址: https://www.6miu.com/read-74701.html

最新回复(0)