Android 之 使用URL访问网络资源
程序员文章站
2022-03-02 19:49:01
...
通过URL访问网络资源:
* URL对象代表统一资源定位器,它是指向互联网“资源”的指针,资源可以是简单的文件目录
也可以是更复杂的对象的引用,URL可以由协议名、主机、端口、和资源组成;
* 格式:protocal://host:port/resourceName;
例如:http://hao123.com/tiyan.html
* URL 类对象包含的一些方法:用于访问URL对应的资源:
url.getFile(); 获取此url的资源名;
url.getHost(); 获取此url的主机名;
url.getPath(); 获取此url的路径部分;
url.getPort(); 获取端口;
url.getProtocol();
openConnection(); 返回一个URLConnection对象,表示到URL所引用的远程对象连接;
openStream(); 打开此url连接,并返回一个用于读取该url资源的InputStream;
* 例如:访问网络资源上的一张图片;http://192.168.0.11:8080/s.jpg
java代码:
* 使用URLConnection 提交请求:
简介:URLConnection 是个抽象类,它由一个直接的子类HttpURLConnection;
方法的介绍:URL 的openConnection()方法将返回一个URLConnection对象,该对象表示应用程序和URL之间
的通信连接,程序可以通过URLConnection实例向URL发送请求,读取URL引用的资源;
使用步骤:
* 使用HttpURLConnection 访问网络:
简介:HttpURLConnection 继承了URLConnection,因此可用于向指定的网站发送get post请求;
在URLConnection的基础上提供了如下便捷的方法;
getResponsedCode(); 获取服务器上的响应代码;
getResponseMessage(); 获取服务器相应消息;
getResponseMethod(); 获取发送请求的方法;
setResponseMethod(String method); 设置发送请求的方法;
温馨提示:get与post的介绍:
* Http 通信中使用最多的是get 和post , GET 请求可以获取静态页面,可以把参数放在url
字符串后面传递给服务器;
* 不同点:post的参数不是放在url字符串里,而是放在http请求数据中;
案例:使用HttpURLConnection 访问网络图片:
java代码:
* URL对象代表统一资源定位器,它是指向互联网“资源”的指针,资源可以是简单的文件目录
也可以是更复杂的对象的引用,URL可以由协议名、主机、端口、和资源组成;
* 格式:protocal://host:port/resourceName;
例如:http://hao123.com/tiyan.html
* URL 类对象包含的一些方法:用于访问URL对应的资源:
url.getFile(); 获取此url的资源名;
url.getHost(); 获取此url的主机名;
url.getPath(); 获取此url的路径部分;
url.getPort(); 获取端口;
url.getProtocol();
openConnection(); 返回一个URLConnection对象,表示到URL所引用的远程对象连接;
openStream(); 打开此url连接,并返回一个用于读取该url资源的InputStream;
* 例如:访问网络资源上的一张图片;http://192.168.0.11:8080/s.jpg
java代码:
/* 测试:使用URL访问网络资源 */ OnClickListener listener = new OnClickListener() { public void onClick(View v) { try{ //http://192.168.0.11:8080/s.jpg 图片的网络地址 String url_path = "http://192.168.0.11:8080/s.jpg"; URL url = new URL(url_path); /* 打开URL对应的资源的输入流 */ InputStream is = url.openStream(); /* 从InputStream中解析出图片 */ Bitmap bitmap = BitmapFactory.decodeStream(is); /* 使用ImageView显示该图片 */ imageView.setImageBitmap(bitmap); /* 关闭流 */ is.close(); /****************************************************/ /* 实现资源文件的保存 *//* 再次打开输入流 */ is = url.openStream(); /* 打开手机文件对应的输出流 *//* 参数:保存的文件名; 模式 */ OutputStream os = openFileOutput("pic.jpg", MODE_WORLD_WRITEABLE); /* 字节数组 */ byte[] buffer = new byte[1024]; int hasRead = 0; while((hasRead=is.read(buffer))>0){ os.write(buffer, 0, hasRead); } is.close(); os.close(); }catch(Exception ex){ } } };
* 使用URLConnection 提交请求:
简介:URLConnection 是个抽象类,它由一个直接的子类HttpURLConnection;
方法的介绍:URL 的openConnection()方法将返回一个URLConnection对象,该对象表示应用程序和URL之间
的通信连接,程序可以通过URLConnection实例向URL发送请求,读取URL引用的资源;
使用步骤:
* 使用HttpURLConnection 访问网络:
简介:HttpURLConnection 继承了URLConnection,因此可用于向指定的网站发送get post请求;
在URLConnection的基础上提供了如下便捷的方法;
getResponsedCode(); 获取服务器上的响应代码;
getResponseMessage(); 获取服务器相应消息;
getResponseMethod(); 获取发送请求的方法;
setResponseMethod(String method); 设置发送请求的方法;
温馨提示:get与post的介绍:
* Http 通信中使用最多的是get 和post , GET 请求可以获取静态页面,可以把参数放在url
字符串后面传递给服务器;
* 不同点:post的参数不是放在url字符串里,而是放在http请求数据中;
案例:使用HttpURLConnection 访问网络图片:
java代码:
/* 测试:通过HttpURLConnection 访问网络图片 */ OnClickListener listerner_httpURLConnection = new OnClickListener() { public void onClick(View v) { try{ String path = ""; //URL 地址 URL url = new URL(path); /* 打开连接, 获取HttpURLConnection 的对象 */ HttpURLConnection conn = (HttpURLConnection) url.openConnection(); /* 设置请求方式 */ conn.setRequestMethod("get"); /* 设置请求超时的时间 */ conn.setReadTimeout(5000); /* 打开流,获取通道 *//* 可读流,从网络上将资源读取到内存中 */ InputStream is = conn.getInputStream(); /* 创建一个字节数据输出流;可写流 */ ByteArrayOutputStream baos = new ByteArrayOutputStream(); /* 创建一个字节数组 */ byte[] buffer = new byte[1024]; int len=0; /* 每次读取数据1024个字节,直到没有数据可读时==-1 */ while((len=is.read(buffer))!=-1 ){ /* 将每次读取到的输入按指定大小写入输出流中 */ baos.write(buffer,0,len); } byte[] data = baos.toByteArray(); Bitmap bitmap = BitmapFactory.decodeByteArray(buffer, 0, data.length); imageView.setImageBitmap(bitmap); }catch(Exception ex){ Toast.makeText(MainActivity.this, "图片下载失败", 1000).show(); } } };
推荐阅读
-
Android开发之自带下载器DownloadManager的使用示例代码
-
Android中加载网络资源时的优化可使用(线程+缓存)解决
-
android之自定义Toast使用方法
-
Android开发之瀑布流控件的实现与使用方法示例
-
Android开发之使用150行代码实现滑动返回效果
-
android之HttpPost&HttpGet使用方法介绍
-
Android之联系人PinnedHeaderListView使用介绍
-
Android之使用Android-query框架开发实战(二)
-
Android之使用Android-query框架开发实战(一)
-
Android开发之MediaPlayer基本使用方法详解