okhttp的使用

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值