一.使用URL读取网络资源
URL对象提供的openStream()方法可以读取该URL资源的InputStream
eg:
URL url = new URL("http://192.168.1.99/las/a.png");
InputStream is = url.openStream();//打开该URL对应的资源的输入流
Bitmap bitmap = BitmapFactory.decodeStream(is);//从InputStream中解析出图片
imageView.setImageBitmap(bitmap);
is.close();
is = url.openStream();
OutputStream os = openFileOutput("crazy.png",MODE_WORLD_READABLE);
byte[] buff = new byte[1024];
int hasRead = 0;
while((hasRead = is.read(buff))>0){ os.write(buff,0,hasRead); }
is.close();
os.close();
该程序需要访问互联网,因此需要授予该程序访问网络的权限,uses-permission android:name = "android.permission.INTERNET",该图片会在手机文件系统的/data/data/包名/files/目录下生成crazy.png图片,该图片就是通过URL从网络上下载的图片
二.使用URLConnection 提交请求
URL的openConnection()方法将返回一个URLConnection对象,该对象表示应用程序和URL之间的通信链接,程序可以通过URLConnection实例向该URL发送请求,读取URL引用的资源
1.通过调用URL对象openConnection()方法来创建URLConnection对象
2.设置URLConnection的参数和普通请求属性
3.如果只是发送GET方式请求,使用connect方法简历和远程资源之间的实际连接即可;如果需要发送POST方式的请求,需要获取URLConnection实例对应的输出流来发送请求参数
4.远程资源变为可用,程序可以访问远程资源的头字段,或通过输入流读取远程资源的数据
三.使用HttpClient
1.创建HttpClient对象
2.如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象
3.如果需要发送请求参数,可调用HttpGet,HttpPost共同的setParams(HttpParams params)方法来添加请求参数;对于HttpPost对象而言,可调用setEntity(HttpEntity entity)方法来设置请求参数
4.调用HttpClient对象的excute(HttpUriRequest request)发送请求,执行该方法返回一个HttpResponse.
5.调用HttpResponse的getAllHeaders(),getHeaders(String name)等方法可获取服务器的响应头;调用HttpResponse的getEntity方法可获取HttpEntity对象,该对象包装了服务器的响应内容,程序可通过该对象获取服务器的响应内容.