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()只允許調用一次,調用該方法後表示流已經關閉,所以取響應數據時應將該結果賦值到新的變量參數中





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章