使用httpget方式獲取網路上的圖片
在使用http的get方法獲取網路資源的時候,需要如下步驟:
1;因為httpClient(是一個公共介面 )所以首先要實現這個的介面,使用DefaultHttpClient()
HttpClient client = newDefaultHttpClient();
2:建立一個httpGet物件傳入目標網路地址,
httpGet get= new httpGet (url);
3:然後呼叫HttpClient 的Execute ()方法執行後會返回一個HttpResponse。伺服器中的資料都保護在其中,(但此資料不可直接使用需經過處理)
HttpResponse response= client.execute(
4:呼叫 HttpResponse類中的getEntity方法獲取訊息實體,然後進行處理
例如:如果是字元型的使用如下方法:
HttpEnity enity = responce.getEntity ();
String info = EntityUtils.tostring (entity,”utf-8”);
如果是圖片的話
HttpEnity enity = responce.getEntity ();
byte[] data = EntityUtils .toByteArray (entiy);
Bitmap bitmap = BitmapFactory.decodeByteArray (data, 0 , data.length);
程式碼如下:
public class MainActivity extends Activity {
private Button button = null;
private ImageView image = null;
String imagpath = "http://10.0.2.2:8080/ServiceForPicture/aa.jpg";
HttpClient client = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main
button = (Button) findViewById(R.id.button);
image = (ImageView) findViewById(R.id.imageView);
client = new DefaultHttpClient();
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new MyTask().execute(imagpath);
}
});
}
class MyTask extends AsyncTask<String, Void, Bitmap> {
@Override
protected void onPostExecute(Bitmap result) {
super.onPostExecute(result);
image.setImageBitmap(result);
}
@Override
protected Bitmap doInBackground(String... params) {
Bitmap bitmap = null;
String url = params[0];
HttpGet get = new HttpGet(url);
try {
HttpResponse httpResponse = client.execute(get);
HttpEntity entity = httpResponse.getEntity();
byte[] data = EntityUtils.toByteArray(entity);
bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);// 將圖片轉換成bitmap型別
} catch (ClientProtocolException e) {
// TODO 自動生成的 catch 塊
e.printStackTrace();
} catch (IOException e) {
// TODO 自動生成的 catch 塊
e.printStackTrace();
}
return bitmap;
}
}
}
對於佈局檔案中新增一個Button, 和一個imageview即可。(這裡就不在貼出)
然後在清單檔案中宣告網路許可權後,然後即可在模擬器上執行。