在使用http的get方法获取网络资源的时候,需要如下步骤:
1;因为httpClient(是一个公共接口 )所以首先要实现这个的接口,使用DefaultHttpClient()
HttpClient client = newDefaultHttpClient();
2:创建一个httpGet对象传入目标网络地址,
httpGet get= new httpGet (url);
3:然后调用HttpClient 的Execute ()方法执行后会返回一个HttpResponse。服务器中的数据都保护在其中,(但此数据不可直接使用需经过处理)
HttpResponse response= client.execute(get);
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即可。(这里就不在贴出)
然后在清单文件中声明网络权限后,然后即可在模拟器上运行。