歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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. }  
運行效果:

      

        這樣就成功加載了網頁內容。

Copyright © Linux教程網 All Rights Reserved