Android開發16——獲取網路資源之基礎應用
一、專案背景
在Android開發中有一項非常廣泛的應用:Android專案獲取另一個web專案的資源或者返回的資料。本博文介紹了獲取另一個web專案的資源。有一個web專案,在其WebRoot資料夾下有一個靜態頁面test.html。現有一個Android專案要獲取到該頁面的html程式碼顯示在TextView中。
二、例項程式碼
- public class MainActivity extends Activity
- {
- private EditText txtPath;
- private Button btnShowHtml;
- private TextView txtViewHtml;
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- txtPath = (EditText)this.findViewById(R.id.txtPath);
- btnShowHtml = (Button)this.findViewById(R.id.btnShowHtml);
- txtViewHtml = (TextView)this.findViewById(R.id.txtViewHtml);
- btnShowHtml.setOnClickListener(new ShowHtmlListener());
- }
- private final class ShowHtmlListener implements View.OnClickListener
- {
- @Override
- public void onClick(View v)
- {
- String path = txtPath.getText().toString();
- try
- {
- String html = HtmlService.getHtml(path);
- txtViewHtml.setText(html);
- }
- catch (Exception e)
- {
- Toast.makeText(MainActivity.this, "獲取網頁元素失敗", Toast.LENGTH_SHORT).show();
- }
- }
- }
- }
- package cn.xy.html.service;
- import java.io.InputStream;
- import java.net.HttpURLConnection;
- import java.net.URL;
- import cn.xy.html.util.IOUtils;
- /**
- * Html獲取業務類
- * @author 徐越
- */
- public class HtmlService
- {
- /**
- * 獲取網頁html原始碼
- * @param path
- * @return
- */
- public static String getHtml(String path) throws Exception
- {
- String html = "";
- // 把路徑包裝成URL物件
- URL url = new path);
- // 基於http協議的連線物件
- HttpURLConnection conn = (HttpURLConnection) url.openConnection();
- // 超時時間5s
- conn.setReadTimeout(5000);
- // 獲取傳輸方式
- conn.setRequestMethod("GET");
- // 若響應碼為200說明請求成功
- if(200 == conn.getResponseCode())
- {
- InputStream instream = conn.getInputStream();
- byte[] data = IOUtils.read(instream);
- // 真實情況是讀出請求頭的charset值
- html = new String(data,"UTF-8");
- }
- return html;
- }
- }
- package cn.xy.html.util;
- import java.io.ByteArrayOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- /**
- * IO操作工具類
- * @author 徐越
- */
- public class IOUtils
- {
- /**
- * 獲取輸入流的方法
- */
- public static byte[] read(InputStream instream) throws IOException
- {
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- byte[] buffer = new byte[1024];
- int len = 0;
- while ((len = instream.read(buffer)) != -1)
- {
- bos.write(buffer, 0, len);
- }
- return bos.toByteArray();
- }
- }
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="網路頁面路徑"
- />
- <!-- 網址輸入不能使localhost或127.0.0.1 -->
- <!-- 因為android是一個作業系統,輸入localhost或127.0.0.1會到本作業系統下去找某web應用,所以要使用區域網的ip -->
- <EditText
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:id="@+id/txtPath"
- android:text="http://xxx.xxx.xxx.xxx:8080/ad_20_web/test.html"
- />
- <Button
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="獲取html"
- android:id="@+id/btnShowHtml"
- />
- <ScrollView android:layout_width="wrap_content" android:layout_height="wrap_content">
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:id="@+id/txtViewHtml" />
- </ScrollView>
ScrollView標籤為TextView增加滾動條。
當然不能忘記訪問網路需要許可權
- <!-- 訪問網路許可權 -->
- <uses-permission android:name="android.permission.INTERNET" />
三、總結
HtmlService中的方法其實可以獲取任意型別的資料,因為其中一個環節是獲取了byte[],拿到這個位元組陣列後我們可以根據不同型別的資料進行不同的操作。比如拿到一個圖片byte[],就需要使用Bitmap工廠將其轉化為Bitmap然後賦給ImageView控制元件。所以我們要熟悉獲取網路資源的一般步驟。
本文轉自IT徐胖子的專欄部落格51CTO部落格,原文連結http://blog.51cto.com/woshixy/1087182如需轉載請自行聯絡原作者
woshixuye111
相關文章
- HarmonyOS NEXT應用開發之Axios獲取解析網路資料iOS
- Android開發資源獲取國內代理(轉載)Android
- Android應用鎖之獲取棧頂ActivityAndroid
- 用Python網路爬蟲獲取Mikan動漫資源Python爬蟲
- Saber電源模擬之——基礎應用
- 使用URLConnection物件獲取網路資源資訊物件
- 如何使用 urllib 包獲取網路資源
- Android應用開發之(利用好圖片快取)Android快取
- android應用開發—獲取當前執行的services列表Android
- Android NDK開發之JNI基礎Android
- 用AJAX開發智慧Web應用程式之基礎篇(轉)Web
- Android應用開發:網路工具——Volley(二)Android
- Android獲取應用基本資訊Android
- 鴻蒙系統應用基礎開發鴻蒙
- 好用的資源獲取網站網站
- Android 開源庫獲取途徑整理Android
- Android開源庫獲取途徑整理Android
- Android應用資源Android
- CNNIC:企業開展“網際網路+”的應用基礎日益堅實CNN
- 從應用側到基礎軟體,國內開源生態之變
- 應用程式基礎知識:activity和intent——Android開發祕籍IntentAndroid
- 網路節點資源獲取共享方面的演算法演算法
- [Android]獲取網路連線狀態Android
- 快應用開發資源彙總?
- Android應用基礎知識Android
- 【Android研究院之應用開發】Android
- Java - 獲取ClassPath的路徑和資源Java
- 網路開發基礎客戶端001客戶端
- 網路開發基礎服務端001服務端
- Android逆向之旅---Android中如何獲取在非Root裝置中獲取應用隱私資料Android
- Android 通過名稱獲取資源IDAndroid
- Util應用框架基礎(七) - 快取框架快取
- 零基礎自學用Python 3開發網路爬蟲(一)Python爬蟲
- 快速開發基於 HTML5 網路拓撲圖應用HTML
- java web 之 網頁前端開發基礎(1)JavaWeb網頁前端
- 快速Android開發系列網路篇之RetrofitAndroid
- .NET 基礎拾遺(7):Web Service 的開發與應用基礎Web
- Android12以上獲取裝置網路訊號資料Android