Android开发教程:使用http协议获取网络图片


http用于传输WWW方式的数据。http协议采用了请求响应的模型。在Android中提供了HttpURLConnection和HttpClient接口开发HTTP程序。下面分别使用这两种方式获取网络图片。

1.HttpURLConnection

代码如下:   

[html]
  1. public class HttpURLConnectionActivity extends Activity {  
  2.   
  3.     private ImageView imageView;  
  4.     @Override  
  5.     protected void onCreate(Bundle savedInstanceState) {  
  6.         // TODO Auto-generated method stub  
  7.         super.onCreate(savedInstanceState);  
  8.         setContentView(R.layout.simple1);  
  9.           
  10.         imageView=(ImageView) this.findViewById(R.id.imageView1);  
  11.         //传入网络图片地址  
  12.         try {  
  13.             URL url = new URL("http://news.xinhuanet.com/photo/2012-02/09/122675973_51n.jpg");  
  14.             HttpURLConnection conn= (HttpURLConnection) url.openConnection();  
  15.             conn.setRequestMethod("GET");  
  16.             conn.setConnectTimeout(5*1000);  
  17.             conn.connect();  
  18.             InputStream in=conn.getInputStream();  
  19.             ByteArrayOutputStream bos=new ByteArrayOutputStream();  
  20.             byte[] buffer=new byte[1024];  
  21.             int len = 0;  
  22.             while((len=in.read(buffer))!=-1){  
  23.                 bos.write(buffer,0,len);  
  24.             }  
  25.             byte[] dataImage=bos.toByteArray();  
  26.             bos.close();  
  27.             in.close();  
  28.             Bitmap bitmap=BitmapFactory.decodeByteArray(dataImage, 0, dataImage.length);  
  29.             //Drawable drawable=BitmapDrawable.  
  30.             imageView.setImageBitmap(bitmap);  
  31.         } catch (Exception e) {  
  32.             // TODO Auto-generated catch block  
  33.             e.printStackTrace();  
  34.             Toast.makeText(getApplicationContext(), "图片加载失败", 1).show();  
  35.         }  
  36.           
  37.     }  
  38. }  
最后不要忘记在manifest.xml加入网络访问权限:
[html]
  1. <uses-permission android:name="android.permission.INTERNET" />  
         由于访问网络图片是比较耗时的操作,所以在正式项目中使用异步加载图片,效果会更好。

         运行效果:

       

         2.HttpClient

          下面使用HttpClient获取网页内容:

         [html]

  1. public class HttpClientActivity extends Activity {  
  2.   
  3.     private ImageView imageview;  
  4.     private TextView text;  
  5.     @Override  
  6.     protected void onCreate(Bundle savedInstanceState) {  
  7.         // TODO Auto-generated method stub  
  8.         super.onCreate(savedInstanceState);  
  9.         setContentView(R.layout.simple2);  
  10.           
  11.         imageview=(ImageView) this.findViewById(R.id.imageView2);  
  12.         text=(TextView) this.findViewById(R.id.textView2);  
  13.         HttpGet httpGet=new HttpGet("http://cloud.csdn.net/a/20120209/311628.html");  
  14.         HttpClient httpClient=new DefaultHttpClient();  
  15.         try {  
  16.             //得到HttpResponse对象  
  17.             HttpResponse httpResponse=httpClient.execute(httpGet);  
  18.             //HttpResponse的返回结果是不是成功  
  19.             if(httpResponse.getStatusLine().getStatusCode()==HttpStatus.SC_OK){  
  20.                 //得到返回数据的字符串  
  21.                 String dataImageStr=EntityUtils.toString(httpResponse.getEntity());  
  22.                 text.setText(dataImageStr);  
  23.             }  
  24.         } catch (ClientProtocolException e) {  
  25.             // TODO Auto-generated catch block  
  26.             e.printStackTrace();  
  27.         } catch (IOException e) {  
  28.             // TODO Auto-generated catch block  
  29.             e.printStackTrace();  
  30.         }  
  31.     }  
  32. }  
运行效果:

      

        这样就成功加载了网页内容。

相关内容