使用httpget方式获取网络上的图片

来源:互联网 发布:mac设置iphone铃声2017 编辑:程序博客网 时间:2024/05/01 08:52


在使用httpget方法获取网络资源的时候,需要如下步骤:

1;因为httpClient(是一个公共接口 )所以首先要实现这个的接口,使用DefaultHttpClient()

HttpClient client = newDefaultHttpClient();

2:创建一个httpGet对象传入目标网络地址,

httpGet get= new httpGet url);

3:然后调用HttpClient Execute ()方法执行后会返回一个HttpResponse。服务器中的数据都保护在其中,(但此数据不可直接使用需经过处理)

HttpResponse response= client.executeget);

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即可。(这里就不在贴出)

然后在清单文件中声明网络权限后,然后即可在模拟器上运行。

 

 

 

 

 

 

0 0
原创粉丝点击