Android的網絡應用

使用URL訪問網絡資源

       URL對象代表統一資源定位器,它是指向互聯網”資源”的指針,資源可以是簡單的文件或目錄,也可以是對更復雜的對象的引用,URL可以由協議名、主機、端口和資源組成。

       URL的openConnection()方法將返回一個URLConnection對象,該對象表示應用程序和URL之間的通信連接,程序可以通過URLConnection實例向該URL發送請求,讀取URL引用的資源。

       通常創建一個和URL的連接,併發送請求。讀取此URL引用的資源需要如下幾個步驟:

1)  通過調用Url對象openConnection()方法來創建URLConnection對象

2) 設置URLConnection的參數和普通請求屬性

3) 如果只是發送get方式請求,使用Connect方法建立和遠程資源之間的實際連接即可;如果需要發送post方式的請求需要獲取URlConnection實例對應的輸出流來發送請求參數

4) 遠程資源變爲可用,程序可以訪問遠程資源的頭字段或通過輸入流讀取遠程資源的數據。

J2SE實現網絡圖片的獲取

importjava.io.ByteArrayOutputStream;

importjava.io.File;

importjava.io.FileOutputStream;

importjava.io.InputStream;

importjava.net.HttpURLConnection;

importjava.net.URL;

 

 

publicclass NetTest {

 

 

       public static void main(String[] args)throws Exception {

              Stringpath="http://pic2.nipic.com/20090505/2186940_203750018_2.jpg";

             

              URL url = new URL(path);

             

              HttpURLConnection conn =(HttpURLConnection) url.openConnection();

              conn.setRequestMethod("GET");

              conn.setConnectTimeout(5000);

             

              InputStream inStream =conn.getInputStream();

             

              ByteArrayOutputStream bos = newByteArrayOutputStream();

              byte[] buffer = new byte[1024];

              int len=0;

              while((len=inStream.read(buffer))!= -1){

                     bos.write(buffer,0,len);

              }

              byte[] data = bos.toByteArray();

             

              File file = newFile("picture.jpg");

              FileOutputStream fos = newFileOutputStream(file);

              fos.write(data);

              fos.close();

             

              System.out.println("finish.......");

       }

 

}

Androd中獲取網絡圖片

資源文件:

<string name="btn_text">顯示網絡圖片</string>

    <string name="error">下載圖片失敗!!</string>

佈局文件

    <Button

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="@string/btn_text"

        android:id="@+id/showImageBtn"

       />

   <ImageView

       android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:id="@+id/imageView"

       />  

添加ImageService類

packagecn.class3g.service;

 

importjava.io.ByteArrayOutputStream;

importjava.io.InputStream;

importjava.net.HttpURLConnection;

importjava.net.MalformedURLException;

importjava.net.URL;

 

publicclass ImageService {

       public static byte[] getImageData(Stringpath) throws Exception {

       URL url = new URL(path);

      

       HttpURLConnection conn =(HttpURLConnection) url.openConnection();

       conn.setRequestMethod("GET");

       conn.setConnectTimeout(5000);

      

       InputStream inStream =conn.getInputStream();

      

       ByteArrayOutputStream bos = newByteArrayOutputStream();

       byte[] buffer = new byte[1024];

       int len=0;

       while((len=inStream.read(buffer)) != -1){

              bos.write(buffer,0,len);

       }

       byte[] data = bos.toByteArray();

      

              return data;

       }

}

ShowImageActivity類

packagecn.class3g.net;

 

importcn.class3g.service.ImageService;

importandroid.app.Activity;

importandroid.graphics.Bitmap;

importandroid.graphics.BitmapFactory;

importandroid.os.Bundle;

importandroid.util.Log;

importandroid.view.View;

importandroid.view.View.OnClickListener;

importandroid.widget.Button;

importandroid.widget.ImageView;

importandroid.widget.Toast;

 

publicclass ShowImageActivity extends Activity implements OnClickListener {

       Button btn;

       ImageView imgView;

    public void onCreate(BundlesavedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.img_layout);

       

        findViews();

    }

       private void findViews() {

              btn = (Button)this.findViewById(R.id.showImageBtn);

              imgView = (ImageView)this.findViewById(R.id.imageView);

             

              btn.setOnClickListener(this);

             

       }

       @Override

       public void onClick(View v) {

              Stringpath="http://pic2.nipic.com/20090505/2186940_203750018_2.jpg";

              byte data[];

              try {

                     data =ImageService.getImageData(path);

                     Bitmap titmap =BitmapFactory.decodeByteArray(data, 0, data.length);

                     imgView.setImageBitmap(titmap);

              } catch (Exception e) {

//                   e.printStackTrace();

                     Log.e("TAG",e.toString());

                     Toast.makeText(this,R.string.error, Toast.LENGTH_SHORT).show();

              }

       }

}

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章