URL(Uniform Resource Locator)是統(tǒng)一資源定位器,它是對可以從互聯(lián)網(wǎng)上得到的資源的位置和訪問方法的一種簡潔的表示,是互聯(lián)網(wǎng)上標準資源的地址。互聯(lián)網(wǎng)上的每個文件都有一個唯一的URL,它包含的信息指出文件的位置以及瀏覽器應該怎么處理它。就通常情況而言,URL可以由協(xié)議名、主機、端口和資源組成。
成都網(wǎng)站建設哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設計、重慶網(wǎng)站建設公司、微信開發(fā)、小程序開發(fā)、集團企業(yè)網(wǎng)站設計等服務項目。核心團隊均擁有互聯(lián)網(wǎng)行業(yè)多年經(jīng)驗,服務眾多知名企業(yè)客戶;涵蓋的客戶類型包括:成都不銹鋼雕塑等眾多領(lǐng)域,積累了大量豐富的經(jīng)驗,同時也獲得了客戶的一致稱揚!
URL類提供了多個構(gòu)造器用于創(chuàng)建URL對象,一旦獲得了URL對象之后,就可以調(diào)用如下常用方法來訪問該URL對應的資源了。
->String getFile():獲取此URL的資源名;
->String getHost():獲取此URL的主機名;
->String getPath():獲取此URL的路徑部分;
->String getPort():獲取此URL的端口號;
->String getProtocol():獲取此URL的協(xié)議名稱;
->String getQuery():獲取此URL的查詢字符串部分;
->URLConnection openConnection():返回一個URLConnection對象,它表示到URL所引用的遠程對象的連接;
InputStream openStream():打開與此URL的連接,并返回一個用于讀取該URL資源的InputStream。
URL對象中前幾個方法都非常容易理解,而該對象提供的openStream()可以讀取該URL資源的InputStream,通過該方法可以非常方便地讀取遠程資源。
下面的程序Demo示范了如何通過URL類讀取遠程資源。
layout/activity_main.xml界面布局代碼如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ImageView android:id="@+id/show" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="fitCenter" /> </LinearLayout>
MainActivity.java邏輯代碼如下:
package com.fukaimei.urltest; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ImageView; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; public class MainActivity extends AppCompatActivity { ImageView show; // 代表從網(wǎng)絡下載得到的圖片 Bitmap bitmap; Handler handler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 0x123) { // 使用ImageView顯示該圖片 show.setImageBitmap(bitmap); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); show = (ImageView) findViewById(R.id.show); new Thread() { @Override public void run() { try { // 定義一個URL對象 URL url = new URL("http://172.xx.xxx.xxx:8080/fukaimei/android_vs_ios.jpg"); // 打開該URL對應的資源的輸入流 InputStream is = url.openStream(); // 從InputStream中解析出圖片 bitmap = BitmapFactory.decodeStream(is); // 發(fā)送消息,通知UI組件的資源的輸入流 handler.sendEmptyMessage(0x123); is.close(); // 再次打開URL對應的資源的輸入流 is = url.openStream(); // 打開手機文件對應的輸入流 OutputStream os = openFileOutput("android_vs_ios.jpg", MODE_PRIVATE); byte[] buff = new byte[1024]; int hasRead = 0; // 將URL對應的資源下載到本地 while ((hasRead = is.read(buff)) > 0) { os.write(buff, 0, hasRead); } is.close(); os.close(); } catch (Exception e) { e.printStackTrace(); } } }.start(); } }
上面的程序Demo兩次調(diào)用了URL對象的openStream()方法打開URL對應的資源的輸入流,程序第一次使用BitmapFactory的decodeStream(InputStream)方法來解析該輸入流中的圖片;第二次則使用IO將輸入流中的圖片下載到本地。
注意:由于該程序需要訪問互聯(lián)網(wǎng),因此還需要在清單文件AndroidManifest.xml文件中授權(quán)訪問互聯(lián)網(wǎng)的權(quán)限:
<!-- 授權(quán)訪問互聯(lián)網(wǎng)--> <uses-permission android:name="android.permission.INTERNET" />
Demo程序運行效果界面截圖如下:
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。
名稱欄目:Android使用URL讀取網(wǎng)絡資源的方法
文章位置:http://vcdvsql.cn/article38/gdijpp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、小程序開發(fā)、網(wǎng)站制作、定制開發(fā)、網(wǎng)站維護、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)