安卓个人学习笔记---使用URL访问网络资源

使用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();
              }
       }
}
 


你可能感兴趣的:(exception,android,网络,url,buffer,byte)