Java网络编程之URLConnection
Java网络编程之URLConnecton
一、URLConnection简介
URLConnection是一个抽象类,表示指向URL指定资源的活动连接。URLConnection有两个不同但相关的用途。首先,与URL类相比,它对与服务器(特别是HTTP服务器)的交互提供了更多的控制。URLConnection可以检查服务器发送的首部,并相应地做出响应。他可以设置客户端请求中使用的首部字段。最后,URLConnection可以用POST。PUT和其它HTTP请求方法向服务器发回数据,此类的实例可用于读取和写入此URL引用的资源。使用URLConnection对象一般分为以下7步:
①创建一个URL对象;
②通过URL对象的openConnection方法创建URLConnection对象;
③通过URLConnection对象提供的方法可以设置参数和一般请求属性。常用的请求属性设置方式有以下几种:
public void setRequestProperty(String key,String value)设置指定的请求关键字对应的值
public void setDoInput(boolean doinput)设置是否使用URL连接进行输入,默认值为true
public void setDoOutput(boolean dooutput)设置是否使用URL连接进行输出,默认值为false,如果设置为true,就可以获取一个字节输出流,用于将数据发送到服务器
public void setUseCaches(boolean usecaches)设置此连接是否使用任何可用的缓存,默认值为true
④调用URLConnection对象的connect方法连接到该远程资源
⑤连接到服务器后,就可以查询头部信息了,查询头部信息常用方法有以下几种:
public String getHeaderField(String name)返回指定头字段的值
public Map<String,List<String>>getHeaderFields()返回头字段的不可修改的Map
public String getContentType()返回content-type头字段的值
public String getContentEncoding()返回content-encoding的值
⑥获取输入流访问资源数据。使用getInputStream 方法,获取一个字节输入流,以便读取资源信息
⑦获取输入流并写数据
二、URLConnection数据结构
HttpURLConnection是URLConnection类的子类, URLConnection与HttpURLConnection都是抽象类,无法直接实例化对象。其对象主要通过URL的openConnection()方法获得
三、URLConnection方法摘要
构造方法摘要 | |
---|---|
protected |
URLConnection(URL url) 构造一个到指定 URL 的 URL 连接。 |
方法摘要 | |
---|---|
void |
addRequestProperty(String key, String value) 添加由键值对指定的一般请求属性。 |
abstract |
connect() 打开到此 URL 引用的资源的通信链接(如果尚未建立这样的连接)。 |
boolean |
getAllowUserInteraction() 返回此对象的 allowUserInteraction 字段的值。 |
int |
getConnectTimeout() 返回连接超时设置。 |
Object |
getContent() 获取此 URL 连接的内容。 |
Object |
getContent(Class[] classes) 获取此 URL 连接的内容。 |
String |
getContentEncoding() 返回 content-encoding 头字段的值。 |
int |
getContentLength() 返回 content-length 头字段的值。 |
String |
getContentType() 返回 content-type 头字段的值。 |
long |
getDate() 返回 date 头字段的值。 |
static boolean |
getDefaultAllowUserInteraction() 返回 allowUserInteraction 字段的默认值。 |
static String |
getDefaultRequestProperty(String key) 已过时。 应在获得 URLConnection 的适当实例后使用特定 getRequestProperty 方法的实例。 |
boolean |
getDefaultUseCaches() 返回 URLConnection 的 useCaches 标志的默认值。 |
boolean |
getDoInput() 返回此 URLConnection 的 doInput 标志的值。 |
boolean |
getDoOutput() 返回此 URLConnection 的 doOutput 标志的值。 |
long |
getExpiration() 返回 expires 头字段的值。 |
static FileNameMap |
getFileNameMap() 从数据文件加载文件名映射(一个 mimetable)。 |
String |
getHeaderField(int n) 返回第 n 个头字段的值。 |
String |
getHeaderField(String name) 返回指定的头字段的值。 |
long |
getHeaderFieldDate(String name, 返回解析为日期的指定字段的值。 |
int |
getHeaderFieldInt(String name, 返回解析为数字的指定字段的值。 |
String |
getHeaderFieldKey(int n) 返回第 n 个头字段的键。 |
Map<String,List<String>> |
getHeaderFields() 返回头字段的不可修改的 Map。 |
long |
getIfModifiedSince() 返回此对象的 ifModifiedSince 字段的值。 |
InputStream |
getInputStream() 返回从此打开的连接读取的输入流。 |
long |
getLastModified() 返回 last-modified 头字段的值。 |
OutputStream |
getOutputStream() 返回写入到此连接的输出流。 |
Permission |
getPermission() 返回一个权限对象,其代表建立此对象表示的连接所需的权限。 |
int |
getReadTimeout() 返回读入超时设置。 |
Map<String,List<String>> |
getRequestProperties() 返回一个由此连接的一般请求属性构成的不可修改的 Map。 |
String |
getRequestProperty(String key) 返回此连接指定的一般请求属性值。 |
URL |
getURL() 返回此 URLConnection 的 URL 字段的值。 |
boolean |
getUseCaches() 返回此 URLConnection 的 useCaches 字段的值。 |
static String |
guessContentTypeFromName(String fname) 根据 URL 的指定 "file" 部分尝试确定对象的内容类型。 |
static String |
guessContentTypeFromStream(InputStream is) 根据输入流的开始字符尝试确定输入流的类型。 |
void |
setAllowUserInteraction(boolean allowuserinteraction) 设置此 URLConnection 的 allowUserInteraction 字段的值。 |
void |
setConnectTimeout(int timeout) 设置一个指定的超时值(以毫秒为单位),该值将在打开到此 URLConnection 引用的资源的通信链接时使用。 |
static void |
setContentHandlerFactory(ContentHandlerFactory fac) 设置应用程序的 ContentHandlerFactory 。 |
static void |
setDefaultAllowUserInteraction(boolean defaultallowuserinteraction) 将未来的所有 URLConnection 对象的allowUserInteraction 字段的默认值设置为指定的值。 |
static void |
setDefaultRequestProperty(String key, String value) 已过时。 应在获得 URLConnection 的适当实例后使用特定 setRequestProperty 方法的实例。调用此方法没有任何作用。 |
void |
setDefaultUseCaches(boolean defaultusecaches) 将 useCaches 字段的默认值设置为指定的值。 |
void |
setDoInput(boolean doinput) 将此 URLConnection 的 doInput 字段的值设置为指定的值。 |
void |
setDoOutput(boolean dooutput) 将此 URLConnection 的 doOutput 字段的值设置为指定的值。 |
static void |
setFileNameMap(FileNameMap map) 设置 FileNameMap。 |
void |
setIfModifiedSince(long ifmodifiedsince) 将此 URLConnection 的 ifModifiedSince 字段的值设置为指定的值。 |
void |
setReadTimeout(int timeout) 将读超时设置为指定的超时值,以毫秒为单位。 |
void |
setRequestProperty(String key, String value) 设置一般请求属性。 |
void |
setUseCaches(boolean usecaches) 将此 URLConnection 的 useCaches 字段的值设置为指定的值。 |
String |
toString() 返回此 URL 连接的 String 表示形式。 |
参考文章:
http://blog.csdn.net/im_xiao/article/details/51125201
如果,您对我的这篇博文有什么疑问,欢迎评论区留言,大家互相讨论学习。
如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】。
如果,您希望更容易地发现我的新博客,不妨点击一下左下角的【关注我】。
如果,您对我的博文感兴趣,可以关注我的后续博客,我是【AlbertRui】。转载请注明出处和链接地址,欢迎转载,谢谢!
Java网络编程之URLConnection的更多相关文章
- Java网络编程之URL和URI
Java网络编程之URL与URI 一.URL与URI简介 URI = Universal Resource Identifier 统一资源标志符 URL = Universal Resource Lo ...
- Java网络编程之TCP、UDP
Java网络编程之TCP.UDP 2014-11-25 15:23 513人阅读 评论(0) 收藏 举报 分类: java基础及多线程(28) 版权声明:本文为博主原创文章,未经博主允许不得转载. ...
- Java网络编程之UDP
Java网络编程之UDP 一.C/S架构中UDP网络通信流程 ①创建DatagramSocket与DatagramPacket对象 ②建立发送端,接收端 ③建立数据包 ④调用Socket的发送.接收方 ...
- Java网络编程之InetAddress浅析
Java网络编程之InetAddress浅析 一.InetAddress综述 IP地址是IP使用的32位(IPv4)或者128位(IPv6)位无符号数字,它是传输层协议TCP,UDP的基础.InetA ...
- Java网络编程之TCP
Java网络编程之TCP TCP主要需要两个类:Socket和ServerSocket,Socket是客户端连接服务器时创建,参数需要指定服务器的ip和端口,ServerSocket是服务器端创建 ...
- java网络编程之TCP通讯
java中的网络编程之TCP协议的详细介绍,以及如何使用,同时我在下面举2例说明如何搭配IO流进行操作, /* *TCP *建立连接,形成传输数据的通道: *在连接中进行大数据量传输: *通过三次握手 ...
- Java网络编程之InetAddress和URL
在Java中提供了专门的网络开发程序包---java.net,java的网络编程提供了两种通信协议:TCP(传输控制协议)和UDP(数据报协议). 一.IP(Internet Protocol) 与I ...
- 3.Java网络编程之IP
前面两篇博文我们已经简单了解了IP.端口.协议以及两种参考模型,我们现在重新从程序角度来看下这个参考模型. 如果我们从事的是Web网站开发,那么我们应该知道HTML是一种超文本标记语言 (Hyper ...
- java网络编程之UDP通讯
详细介绍了java中的网络通信机制,尤其是UDP协议,通过对UDP的基本使用进行举例说明如何使用UDP进行数据的发送接收,并举了两个小demo说明UDP的使用注意事项. UDP协议原理图解: UDP协 ...
随机推荐
- [学习笔记] pymysql入门
一.快速开始 对于会用MySQL的朋友来说,开始使用pymysql可以说真的so esay,只要用下面的代码,把想要对数据库的操作放在 sql = " " 里就可以了. 没有接触过 ...
- 基于drone构建CI-CD系统
kubernetes集群三步安装 CI 概述 用一个可描述的配置定义整个工作流 程序员是很懒的动物,所以想各种办法解决重复劳动的问题,如果你的工作流中还在重复一些事,那么可能就得想想如何优化了 持续集 ...
- Shell基本语法---shell的变量以及常见符号
变量 1. 不同于其它语言需要先声明变量 2 .等号的两边不能有空格 3. 调用变量: $a 或者 ${a} a=; echo $a; echo ${a} 变量 变量意思 $? 判断上一条命令执行的 ...
- IOS应用无法下载、此时无法安装应用程序
无法安装应用 app开发者,进行程序测试,重试还不行,就重新打包, 个人,更改wifi的dns 在“设置” –> “WiFi” –> 进入当前的WiFi 进入之后点击旁边的叹号,然后进入之 ...
- 【iOS】设置 rootViewController
iOS 开发中,rootViewController 经常用到,示例代码如下: self.window = [[UIWindow alloc] initWithFrame:[UIScreen main ...
- MySQL操作命令梳理(2)
一.表操作 在mysql运维操作中会经常使用到alter这个修改表的命令,alter tables允许修改一个现有表的结构,比如增加或删除列.创造或消去索引.改变现有列的类型.或重新命名列或表本身,也 ...
- luogu1373_小a和uim之大逃离 多维dp
传送门 巧妙之处在于dp的设计只用设计差值即可,因此不会mle,枚举的顺序问题也解决了 #include <bits/stdc++.h> using namespace std; #def ...
- 干货 | 博云基于OVS自研容器网络插件在金融企业的落地实践
本文根据博云在dockerone社区微信群分享内容整理 过去几年博云在企业中落地容器云平台遇到了很多痛点,其中一个比较典型的痛点来自网络方面,今天很高兴跟大家聊聊这个话题并介绍下我们基于OVS自研的C ...
- 基于tp3.2的腾讯云短信验证码的实现
新手小白在公司要完成短信验证码注册功能,最初由于没有经验,网上的教程又不是很全,便参考着官方API文档,进行开发 直接进入正题:使用composer下载腾讯云短信接口(记得添加依赖).在项目目录下新建 ...
- SpringBoot-Admin的使用
[**前情提要**]Spring Boot Actuator 提供了对单个 Spring Boot 应用的监控,信息包含应用状态.内存.线程.堆栈等,比较全面的监控了 Spring Boot 应用的整 ...