首页 理论教育 URL与URLConnection技术浅析

URL与URLConnection技术浅析

时间:2023-06-27 理论教育 版权反馈
【摘要】:在URL中,可以使用方法openConnection()返回一个URLConnection对象,该对象表示应用程序和URL之间的通信链接。应用程序可以通过URLConnection实例向此URL发送请求,并读取URL引用的资源。设置URLConnection的参数和普通请求属性。□setDoInput:设置该URLConnection的doInput请求头字段的值。□getInputStream():返回该URLConnection对应的输入流,用于获取URLConnection响应的内容。在接下来的内容中,将通过一个具体实例来讲解在Android系统中使用类URLConnection的基本方法。

URL与URLConnection技术浅析

在计算机应用技术中,URL是Uniform Resource Locator的缩写,意思是统一资源定位器。URL是指向互联网“资源”的指针,这里的资源可以是简单的文件或目录,也可以是对更为复杂的对象引用,例如对数据库搜索引擎的查询。在大多数情况下,URL是由协议名、主机、端口和资源组成的,URL需要满足如下的格式。

978-7-111-52203-4-Part02-2.jpg

例如下面就是一个URL地址

978-7-111-52203-4-Part02-3.jpg

JDK为用户提供了一个URI类,其代表一个统一资源标识符。Java的URI不能用于定位任何资源,它唯一的作用是解析。在URL中包含了一个可以打开到达该资源的输入流,因此可以将URL类理解为URI的一个特例。

在URL类中,提供了多个可以创建URL对象的构造器,一旦获得了URL对象之后,就可以调用下面的方法来访问该URL对应的资源。

□String getFile():获取此URL的资源名。

□String getHost():获取此URL的主机名。

□String getPath():获取此URL的路径部分。

□int getPort():获取此URL的端口号

□String getProtocol():获取此URL的协议名称。

□String getQuery():获取此URL的查询字符串部分。

□URLConnection openConnection():返回一个URLConnection对象,它表示到URL所引用的远程对象的连接。

□InputStream openStream():打开与此URL的连接,并返回一个用于读取该URL资源的InputStream。

在URL中,可以使用方法openConnection()返回一个URLConnection对象,该对象表示应用程序和URL之间的通信链接。应用程序可以通过URLConnection实例向此URL发送请求,并读取URL引用的资源。

创建一个和URL连接的,并发送请求,读取此URL引用的资源的步骤如下:

(1)通过调用URL对象openConnection()方法来创建URLConnection对象。

(2)设置URLConnection的参数和普通请求属性。

(3)如果只是发送GET方式请求,使用方法connect建立和远程资源之间的实际连接即可;如果需要发送POST方式的请求,需要获取URLConnection实例对应的输出流来发送请求参数。

(4)远程资源变为可用,程序可以访问远程资源的头字段或通过输入流读取远程资源的数据。

在建立和远程资源的实际连接之前,可以通过如下方法来设置请求头字段。

□setAllowUserInteraction:设置该URLConnection的allowUserInteraction请求头字段的值。

□setDoInput:设置该URLConnection的doInput请求头字段的值。

□setDoOutput:设置该URLConnection的doOutput请求头字段的值。

□setIfModifiedSince:设置该URLConnection的ifModifiedSince请求头字段的值。

□setUseCaches:设置该URLConnection的useCaches请求头字段的值。

除此之外,还可以使用如下方法来设置或增加通用头字段。

□setRequestProperty(String key,String value):设置该URLConnection的key,请求头字段的值为value。

□addRequestProperty(String key,String value):为该URLConnection的key请求头字段的增加value值,该方法并不会覆盖原请求头字段的值,而是将新值追加到原请求头字段中。

当发现远程资源可以使用后,使用如下方法访问头字段和内容。

□Object getContent():获取该URLConnection的内容。

□String getHeaderField(String name):获取指定响应头字段的值。(www.xing528.com)

□getInputStream():返回该URLConnection对应的输入流,用于获取URLConnection响应的内容。

□getOutputStream():返回该URLConnection对应的输出流,用于向URLConnection发送请求参数。

□getHeaderField:根据响应头字段来返回对应的值。

因为在程序中需要经常访问某些头字段,所以Java为用户提供了如下方法来访问特定响应头字段的值。

□getContentEncoding:获取content-encoding响应头字段的值。

□getContentLength:获取content-length响应头字段的值。

□getContentType:获取content-type响应头字段的值。

□getDate():获取date响应头字段的值。

□getExpiration():获取expires响应头字段的值。

□getLastModified():获取last-modified响应头字段的值。

在编程过程中,无需担心普通Java平台和Android平台的差异,URLConnection在Java中的用法就是在Android应用中的用法。在接下来的内容中,将通过一个具体实例来讲解在Android系统中使用类URLConnection的基本方法。

978-7-111-52203-4-Part02-4.jpg

本实例的功能是,在Gallery中显示某个指定QQ空间中的照片,这样做的好处是节约手机的内置存储空间。在具体实现上,需要将URL网址的相片实时处理下载后,以InputStream转换为Bitmap,这样才能放入BaseAdapter中取用。在运行实例前,需要预先准备照片并上传到网络空间中,在获取相片的连接后,再以String数组方式放在程序中,并对BaseAdapter稍作修改,再加上对URL对象的访问以及URLConnection连接的处理。

本实例的具体实现流程如下。

(1)编写布局文件main.xml,在里面插入了一个Gallery控件来实现滑动相簿效果。具体代码如下。

978-7-111-52203-4-Part02-5.jpg

(2)编写主程序文件QQ.java,其具体实现流程如下。

□分别声明在Gallery中要显示的5副图片的地址栏字符串,具体代码如下。

978-7-111-52203-4-Part02-6.jpg

978-7-111-52203-4-Part02-7.jpg

□引入布局文件main.xml,定义类成员myContext即Context对象,然后设置只有一个参数C的构造器。具体代码如下。

978-7-111-52203-4-Part02-8.jpg

978-7-111-52203-4-Part02-9.jpg

□定义方法getCount()来返回全部已定义图片的总量,定义方法getItem(int position)获取当前容器中图像数的数组ID。具体代码如下。

978-7-111-52203-4-Part02-10.jpg

□定义方法getScale,利用getScale根据中央位移量返回views的大小。具体代码如下。

978-7-111-52203-4-Part02-11.jpg

执行后将在Gallery中显示指定的图片,如图3-2所示。

978-7-111-52203-4-Part02-12.jpg

图3-2 执行效果

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈