最簡易的網路框架封裝(新手可看)
網路通訊在Android上的重要性就不多說了。
demo就是獲取到“https://www.baidu.com/”的HTML程式碼後顯示在textview中,如下圖:(原始碼在文章結尾)
#涉及知識點
1、HTTP網路請求,HttpURLConnnection的使用
2、簡單執行緒
3、定義介面,實現回撥
如果僅僅實現這個功能需要的java程式碼絕對在10行以下,但是本片主要是講一下簡易框架的封裝。
#封裝目的:
1、在同一個專案中,我們要執行網路操作可定不想要每次都編寫一遍HTTP請求的程式碼。通常情況我們都會將這些網路操作提取到一個公共的類裡面,並提供一個靜態方法。
2、HTTP請求操作一般為耗時操作需要放入執行緒。
3、線上程中需要返回從伺服器獲取的資料,要使用java的回撥機制。
框架搭建好之後,程式碼的呼叫如下。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvMain=(TextView)findViewById(R.id.tv_main);
HttpUtill.sendHttpRequest("https://www.baidu.com/", new HttpUtill.HttpCallbackListener() {
@Override
public void onSuccess(String response) {
tvMain.setText(response);
}
@Override
public void onError(Exception e) {
tvMain.setText(e.getMessage());
}
});
}
封裝的程式碼也是非常簡單:
public class HttpUtill {
//為了實現回撥,定義一個介面
public interface HttpCallbackListener{
void onSuccess(String response);
void onError(Exception e);
}
public static void sendHttpRequest(final String mUrl,final HttpCallbackListener listener) {
//此處使用執行緒
new Thread(new Runnable(){
@Override
public void run() {
HttpURLConnection connection = null;
try {
URL url = new URL(mUrl);
connection = (HttpURLConnection) url.openConnection();
InputStream in = connection.getInputStream();
BufferedReader reader = new BufferedReader((new InputStreamReader(in)));
StringBuilder response = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
if(listener!=null){
listener.onSuccess(response.toString());
}
} catch (Exception e) {
e.printStackTrace();
if(listener!=null){
listener.onError(e);
}
} finally {
if (connection != null) {
connection.disconnect();
}
}
}
}).start();
}
}
相關文章
- Flutter 熱門網路請求框架Dio的簡單封裝Flutter框架封裝
- express+mongoose簡易登入,以及封裝思想(純新手向)ExpressGo封裝
- 簡易Dialog封裝封裝
- Flutter 網路請求框架封裝Flutter框架封裝
- 關於網路框架設計封裝的扯淡框架封裝
- 專案重構之網路篇 根據OkHttp封裝簡單的框架HTTP封裝框架
- 【JavaScript框架封裝】公共框架的封裝JavaScript框架封裝
- 應該是最詳細的-swift Moya+handyJSON網路框架的搭建及封裝SwiftJSON框架封裝
- 封裝一個簡易的上傳附件方法封裝
- 5.Hibernate工具類的簡易封裝封裝
- 一個最簡單的類JQuery封裝jQuery封裝
- 網路封裝APi封裝API
- 簡單問題,封裝和框架!封裝框架
- 易理解的Promise封裝Promise封裝
- 封裝一個簡易版的ajax操作物件封裝物件
- AFNetworking的簡易封裝,含字典轉模型封裝模型
- Retrofit + Kotlin + MVVM 的網路請求框架的封裝嘗試KotlinMVVM框架封裝
- 微信小程式之網路請求簡單封裝微信小程式封裝
- Kotlin中Retrofit網路請求簡單封裝Kotlin封裝
- 開源一個封裝AFNetworking的網路框架 - SJNetwork封裝框架
- 開源一個封裝AFNetworking的網路框架 – SJNetwork封裝框架
- Retrofit + RxJava + OkHttp 讓網路請求變的簡單-封裝篇RxJavaHTTP封裝
- web自動化框架—BasePage 類的簡單封裝Web框架封裝
- vue專案的網路模組封裝Vue封裝
- 網路圖片載入的封裝封裝
- OC:封裝網路請求封裝
- 封裝框架的實踐封裝框架
- 一步步封裝實現自己的網路請求框架封裝框架
- uni-app網路請求的封裝APP封裝
- 小程式-網路請求封裝封裝
- Flutter 網路請求 Dio 封裝Flutter封裝
- vue - axios網路封裝模組VueiOS封裝
- 【JavaScript框架封裝】實現一個類似於JQuery的動畫框架的封裝JavaScript框架封裝jQuery動畫
- 封裝JDBC—非框架開發必備的封裝類封裝JDBC框架
- 從封裝函式到實現簡易版自用jQuery (二)封裝函式jQuery
- Retrofit的簡單封裝封裝
- IQueryable的簡單封裝封裝
- ProgressFragment的簡單封裝Fragment封裝