android網絡調試一直是一個比較麻煩的部分,因為在不同序列的請求中,返回的數據會有不同的變化,如果能像web開發一樣使用調試功能查看頁面的訪問數據該是多么美好的事情!
很幸運的是,現在Android開發也可以實時監聽網絡訪問了,能夠看到你的發送數據信息,也能夠看到返回數據信息。
如圖:


點擊每個請求會看到詳細頁面,可以查看請求的詳情,如圖:


如果要達到上面的效果,你需要改造你的網絡請求模塊,使用Chrome瀏覽器和android程序之間的中間件來連接,這就是本篇要介紹的主題:
OkHttp+Stetho+Chrome進行網絡調試。
okhttp是Square的一款非常優秀的網絡訪問框架,它的使用非常簡單,可以通過github去獲取其源代碼:
Stetho則是facebook開發的一款連接android程序和Chrome開發者工具的一個橋梁:
使用方式:
1.工程依賴包如下:
commons-cli-1.2.jar
okhttp-2.3.0.jar
okio-1.3.0.jar
stetho-1.0.1.jar
stetho-okhttp-1.0.1.jar
2.需要繼承Application類來初始化Stetho工具。
package com.peiandsky.chromedebug; import android.app.Application; import com.facebook.stetho.Stetho; public class App extends Application { @Override public void onCreate() { super.onCreate(); Stetho.initialize(Stetho .newInitializerBuilder(this) .enableDumpapp(Stetho.defaultDumperPluginsProvider(this)) .enableWebKitInspector( Stetho.defaultInspectorModulesProvider(this)).build()); } }
在AndroidManifest.xml需要配置為程序的app:


3.使用okhttp訪問的代碼如下:
package com.peiandsky.chromedebug; import java.io.IOException; import com.facebook.stetho.okhttp.StethoInterceptor; import com.squareup.okhttp.OkHttpClient; import com.squareup.okhttp.Request; import com.squareup.okhttp.Response; public class Net { private static final boolean debug = true; private static OkHttpClient okHttpClient = new OkHttpClient(); static { if (debug) { okHttpClient.networkInterceptors().add(new StethoInterceptor()); } } public static final void askBaidu() { Request request = new Request.Builder().url("http://www.baidu.com") .build(); try { Response response = okHttpClient.newCall(request).execute(); String reslut = response.body().string(); } catch (IOException e) { e.printStackTrace(); } } }
運行程序后就會發現,在chrome中的網址欄輸入:
chrome://inspect/
可以查看如圖:


點擊藍色的inspect的連接,既可以看到本文開頭的調試畫面。