最近由於一些緣由從新接觸棄療很久的android,忽然發如今以前的版本中android比較用的比較多的httpclient不能用了…如今的異步訪問方式用起來又感受有點麻煩,而後經一個同窗提醒想起來一個大牛學長以前在項目中用過的okhttp,而後就用了下,其實速度和使用方式仍是很不錯的,可是遇到了一些小問題,在這裏筆記下。android
okhttp的githup地址,能夠看到是支持maven和gradle導入的:
https://github.com/square/okhttp
首頁文檔:
http://square.github.io/okhttp/git
若是使用maven和gradle配置只要按照github頁面的方法將其加入到相關的配置文件裏就好了,若是下載的是jar包,能夠經過androidstudio的
File > Project Structrue > dependencies
而後add file dependence來添加github
這裏須要的包有兩個
okio.jar
okhttp.jarjson
官網上已有說明以下,可是我遇到的問題其實主要是發送x-www-form-urlencoded參數的post請求,因此這裏就筆記一下官網的文檔好了…app
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(url) .build(); Response response = client.newCall(request).execute(); return response.body().string();
public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8"); OkHttpClient client = new OkHttpClient(); String post(String url, String json) throws IOException { RequestBody body = RequestBody.create(JSON, json); Request request = new Request.Builder() .url(url) .post(body) .build(); Response response = client.newCall(request).execute(); return response.body().string(); }
OkHttpClient okHttpClient = new OkHttpClient(); RequestBody body = new FormEncodingBuilder() .add("user", user) .add("password", pwd) .build(); Request request = new Request.Builder() .url("youurl") .post(body) .build(); Response response = okHttpClient.newCall(request).execute(); String result = response.body().string();