OkHttpClient 教學
OkHttpClient 是Google 推多的 rest 套件,
可支援http/https.這對android來說 是個非常好用的套件,
因android天生的限制,任何的rest都必須放在background thread 處理,以免造成app無回應.
Library
在build.gradle中加入的lib為 com.squareup.okhttp3:okhttp:3.6.0
範例
設定get / post方式
private static final String GET = "GET";
private static final String POST = "POST";
*** GET ***
OkHttpClient okHttpClient = new OkHttpClient();
// result.toString 為網址
Request.Builder requestBuilder = new Request.Builder().url(result.toString());
requestBuilder.method(GET, null);
Request request = requestBuilder.build();
Call call = okHttpClient.newCall(request);
call.enqueue(callback);
*** POST ***
OkHttpClient okHttpClient = new OkHttpClient();
Request.Builder requestBuilder = new Request.Builder().url(getAbsoluteUrl(context, url));
requestBuilder.method(POST, null);
Request request = requestBuilder.build();
Call call = okHttpClient.newCall(request);
call.enqueue(callback);
|
參數設定方式
Get params
okhttp 套件使用 get 時,是不能使用method(“get”, 參數物件)的方式,參數物件必須為null,
為此提供個思路給您,把它組進url中,記得先加“?”後面在加參數key=value&key’=value’的方式組成.
Post params
FormBody.Builder params = new FormBody.Builder();
params.add(“Key”), “value”);
FormBody formBody = params.build();
最後再餵進 requestBuilder.method(POST, formBody)中.
範例
FormBody.Builder params = new FormBody.Builder();
params.add(“key”), “value”);
FormBody formBody = params.build();
RestClient.post(this, getString(R.string.api_url), firmBody, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
showErrorInfo();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if(response.code() != 200)
return;
String result = response.body().string();
try {
String limit = new JSONObject(result).getString("key");
if (!check(limit)) {
updateAPP();
return;
}
} catch (SQLiteException e) {
e.printStackTrace();
} catch(JSONException e){
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
initData();
}
});
|
04/30
今天找到一篇很有幫助blog
http://www.jianshu.com/p/2fa728c8b366
上面列了取多通訊協定方式
若看了上面範例還是不懂的朋友,可以去看看
留言列表