本來(lái)想先寫(xiě)反編譯系列禁漓,但是拿別人的應(yīng)用(如360優(yōu)化大師等)來(lái)作為案列跟衅,感覺(jué)并不適合,因此在反編譯系列之前播歼,先做一個(gè)簡(jiǎn)單的應(yīng)用伶跷,其中包括:FastJson,Volley等庫(kù),同時(shí)實(shí)現(xiàn)Volley庫(kù)的封裝叭莫。
該項(xiàng)目的目的是作為反編譯系列的素材磷支。
創(chuàng)建項(xiàng)目
到下一步選擇新建一個(gè)Empty Activity,然后Next食寡,出現(xiàn)如下界面雾狈,直接Finish。(這一步不重要抵皱,也可以在項(xiàng)目建好后自己生成善榛。)
在Android Stuido中,我比較喜歡Project視圖呻畸,更接近文件系統(tǒng)目錄結(jié)構(gòu)移盆。
Android Studio項(xiàng)目目錄結(jié)構(gòu)介紹 - OPEN 開(kāi)發(fā)經(jīng)驗(yàn)庫(kù)
引入Volley
既然該項(xiàng)目中用到Volley,那學(xué)習(xí)地址必不可少了伤为。
網(wǎng)絡(luò)請(qǐng)求庫(kù)Volley詳解 - 泡在網(wǎng)上的日子
這里引用最新的Volley咒循,將下面一行代碼加入到VolleyDemo/app/build.gradle中的dependencies里。
compile 'com.mcxiaoke.volley:library:1.0.19'
Volley 簡(jiǎn)單使用
既然是有網(wǎng)絡(luò)請(qǐng)求绞愚,那么別忘了給AndroidManifest.xml加上網(wǎng)絡(luò)權(quán)限叙甸。
<uses-permission android:name="android.permission.INTERNET" />
在MainActivity中添加如下方法:
private void initData() {
String url = "http://www.baidu.com/";
StringRequest request = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String s) {
Log.d("demo", "response = " + s);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
Log.e("demo", "onErrorResponse: " + volleyError.getMessage());
}
});
Volley.newRequestQueue(this).add(request);
}
onCreate方法中調(diào)用即可。
@Overrideprotected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initData();
}
編譯運(yùn)行發(fā)現(xiàn)流程已經(jīng)跑通位衩。代碼比較簡(jiǎn)單裆蒸,不過(guò)多解釋。
數(shù)據(jù)來(lái)源
通過(guò)上面的驗(yàn)證糖驴,數(shù)據(jù)流已經(jīng)OK僚祷,現(xiàn)在要開(kāi)始拿真正的數(shù)據(jù)來(lái)做事情了。
因?yàn)轫?xiàng)目比較簡(jiǎn)單贮缕,單獨(dú)做個(gè)服務(wù)端比較浪費(fèi)資源辙谜。因此這里我用Android應(yīng)用架構(gòu)之Retrofit使用文章中提到的 http://ip.taobao.com/service/getIpInfo.php?ip=21.22.11.33 來(lái)作為實(shí)例使用。
發(fā)出一個(gè)簡(jiǎn)單的http GET請(qǐng)求感昼,即可獲得服務(wù)器返回的數(shù)據(jù)装哆,在瀏覽器上訪問(wèn)同理。但是抑诸,如果碰到需要Post請(qǐng)求的接口怎么辦烂琴?如果通過(guò)寫(xiě)代碼調(diào)用API,是可以做到蜕乡,但是個(gè)人感覺(jué)太麻煩了奸绷。因此這里提一下api測(cè)試中的一種便利工具:PostMan。
PostMan
如何在Chrome下使用Postman進(jìn)行rest請(qǐng)求測(cè)試
分別在瀏覽器和瀏覽器和Postman上請(qǐng)求上面的接口
通過(guò)該圖可以發(fā)現(xiàn)Postman的功能還是很強(qiáng)大的层玲,無(wú)論是請(qǐng)求類(lèi)型号醉,設(shè)置Header反症,Params都非常方便。推薦大家使用該工具來(lái)做接口測(cè)試畔派。
現(xiàn)在將代碼中的url設(shè)置為
http://ip.taobao.com/service/getIpInfo.php?ip=21.22.11.33铅碍。
編譯運(yùn)行,打出log:
04-02 17:08:33.403 13181-13181/? D/demo: response = {"code":0,"data":{"country":"\u7f8e\u56fd","country_id":"US","area":"","area_id":"","region":"","region_id":"","city":"","city_id":"","county":"","county_id":"","isp":"","isp_id":"","ip":"21.22.11.33"}}
至此线椰,通過(guò)volley調(diào)用上面的接口已經(jīng)完成胞谈。