close

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

上面列了取多通訊協定方式

若看了上面範例還是不懂的朋友,可以去看看

 

arrow
arrow
    文章標籤
    okhttp3 android restfull
    全站熱搜

    Owen Chen 發表在 痞客邦 留言(0) 人氣()