攔截器 - Interceptor

AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET" />

MainActivity.java

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // 以需身份驗證的 API 為例,用攔截器將所有請求的 HEADER
        // 自動加上 TOKEN 來通過驗證,可減少重複的程式碼。
        Interceptor interceptor = new Interceptor() {
            @Override
            public Response intercept(Chain chain) throws IOException {
                Request oldRequest = chain.request();

                // 建立相同的 Request 並加上 HEADER。
                Request newRequest = oldRequest.newBuilder().addHeader("X-AUTH-TOKEN", "****************").build();

                // 發出請求,並將結果回傳。
                Response response = chain.proceed(newRequest);
                return response;
            }
        };
        OkHttpClient client = new OkHttpClient();

        // 加入攔截器
        client.networkInterceptors().add(interceptor);

        String url = "http://google.com.tw/";
        Request request = new Request.Builder().url(url).build();
        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Request request, final IOException e) {
                e.printStackTrace();
            }

            @Override
            public void onResponse(final Response response) {
                try {

                    // 取得內容
                    String result = response.body().string();
                    Log.d("MainActivity", result);

                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });
    }
}