標籤:android 網路 擷取伺服器上資源 擷取資料
網路作為android的資料存放區的一種,那麼極大的擴大了app的使用範圍,因為任何資訊我們都可以從網路上擷取,試想一下我們自己搭建一個伺服器,然後通過app向伺服器請求資料,那麼要修改顯示資料的時候,我們只需要修改伺服器上的資料,app只是一個顯示載體。目前確實有很多app是這樣開發的,在app內部可以嵌套一個瀏覽器,當然也可以使用android內建的webview,那麼開發就可以分開了,android的做android的部分,網站的做網站的部分,極大的提高了開發效率,而且也增加了app的功能和多樣性,是不是很贊。今天我們來簡單介紹一下android通過網路來擷取資料:
用作測試,我在自己機器上搭建了一個Tomcat7.0伺服器,很簡單,搭建可以參照其他部落格搭建一個,用作自己測試很方便。然後建立了一個網站項目(Web1),在網站中放置了一個txt檔案: android.txt. 然後我們看怎麼通過網路來擷取並讀取它的內容。
這兩個檔案是相當於伺服器上的檔案:
我們來看看android的代碼:
getNetDataBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { URL url = new URL( "http://192.168.1.23:8080/Web1/android.txt"); URLConnection urlConn = url.openConnection(); InputStream is = urlConn.getInputStream(); byte[] buffer = new byte[is.available()]; is.read(buffer); String words = EncodingUtils.getString(buffer, "UTF-8"); Log.e(TAG, "words:" + words); } catch (IOException e) { e.printStackTrace(); } } });
這裡就沒有貼出全代碼了,Mainactivity裡面就一個按鈕,點擊相應擷取檔案資料。
擷取的結果:
注意:
1. http://192.168.1.23:8080/Web1/android.txt 這個地址中,192.168.1.23 是我在區域網路中的IP地址,這裡就android模擬器就不要使用127.0.0.1來訪問本機上的伺服器了,因為這個地址已經被android模擬器自己佔用,所以要用區域網路ip地址訪問。 8080是連接埠號碼,根據你自己的伺服器配置而定。
2. 我們在將位元組流轉化為string的時候,最好是指定編碼格式,通常的做法就是使用 EncodingUtils來轉換,UTF-8是一種編碼格式,也可以使用GB2312等,自己去查看一些資料吧。這個格式應該是按照伺服器上這個檔案的格式來確定的。
3. android中訪問網路需要許可權: <uses-permission android:name="android.permission.INTERNET"/>
這個例子很簡單,只是為了引導一下,以後再做詳解!
Android入門筆記 - 資料存放區 - 網路