码迷,mamicode.com
首页 > 编程语言 > 详细

java中的HttpURLConnection

时间:2014-12-31 18:26:47      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:java   httpurlconnection   

一、概述

该类位于java.net  声明:public abstract class HttpURLConnection extends URLConnection

支持 HTTP 特定功能的 URLConnection

每个 HttpURLConnection 实例都可用于生成单个请求,但是其他实例可以透明地共享连接到 HTTP 服务器的基础网络。请求后在 HttpURLConnection 的 InputStream 或 OutputStream 上调用 close() 方法可以释放与此实例关联的网络资源,但对共享的持久连接没有任何影响。如果在调用 disconnect() 时持久连接空闲,则可能关闭基础套接字。


二、字段

1、protected String method  HTTP 方法(GET、POST、PUT 等)。

2、protected int chunkLength  使用存储块编码流模式进行输出时的存储块长度。值 -1 表示对输出禁用存储块编码。

3、protected int fixedContentLength  使用固定长度流模式时的固定内容长度。值 -1 表示对输出禁用固定长度流模式。 

4、protected int responseCode  表示三位字数的 HTTP 状态码 (Status-Code) 的 int。 

  • 1xx:Informational
  • 2xx:Success
  • 3xx:Redirection
  • 4xx:Client Error
  • 5xx:Server Error 
5、protected String responseMessage  HTTP 响应消息。

6、protected boolean instanceFollowRedirects  如果为 true,则协议自动执行重定向。如果为 false,则协议不会自动执行重定向。

此字段由 setInstanceFollowRedirects 方法设置。其值由 getInstanceFollowRedirects 方法返回。

其默认值基于构造 HttpURLConnection 时静态 followRedirects 的值。

7、public static final int HTTP_OK HTTP 状态码 200:OK。

8、public static final int HTTP_CREATED  HTTP 状态码 201:Created。

9、public static final int HTTP_ACCEPTED  HTTP 状态码 202:Accepted。

10、public static final int HTTP_NOT_AUTHORITATIVE  HTTP 状态码 203:Non-Authoritative Information。

11、public static final int HTTP_NO_CONTENT  HTTP 状态码 204:No Content。

12、public static final int HTTP_RESET  HTTP 状态码 205:Reset Content。

13、public static final int HTTP_PARTIAL  HTTP 状态码 206:Partial Content。

14、public static final int HTTP_MULT_CHOICE  HTTP 状态码 300:Multiple Choices。

15、public static final int HTTP_MOVED_PERM  HTTP 状态码 301:Moved Permanently。

16、public static final int HTTP_MOVED_TEMP  HTTP 状态码 302:Temporary Redirect。

17、public static final int HTTP_SEE_OTHER  HTTP 状态码 303:See Other。

18、public static final int HTTP_NOT_MODIFIED  HTTP 状态码 304:Not Modified。

19、public static final int HTTP_USE_PROXY  HTTP 状态码 305:Use Proxy。

20、public static final int HTTP_BAD_REQUEST  HTTP 状态码 400:Bad Request。

21、public static final int HTTP_UNAUTHORIZED  HTTP 状态码 401:Unauthorized。

22、public static final int HTTP_PAYMENT_REQUIRED  HTTP 状态码 402:Payment Required。

23、public static final int HTTP_FORBIDDEN  HTTP 状态码 403:Forbidden。

24、public static final int HTTP_NOT_FOUND  HTTP 状态码 404:Not Found。

25、public static final int HTTP_BAD_METHOD  HTTP 状态码 405:Method Not Allowed。

26、public static final int HTTP_NOT_ACCEPTABLE  HTTP 状态码 406:Not Acceptable。

27、public static final int HTTP_PROXY_AUTH  HTTP 状态码 407:Proxy Authentication Required

28、public static final int HTTP_CLIENT_TIMEOUT  HTTP 状态码 408:Request Time-Out。

29、public static final int HTTP_CONFLICT   HTTP 状态码 409:Conflict。

30、public static final int HTTP_GONE  HTTP 状态码 410:Gone。

31、public static final int HTTP_LENGTH_REQUIRED  HTTP 状态码 411:Length Required。

32、public static final int HTTP_PRECON_FAILED  HTTP 状态码 412:Precondition Failed。

33、public static final int HTTP_ENTITY_TOO_LARGE  HTTP 状态码 413:Request Entity Too Large。

34、public static final int HTTP_REQ_TOO_LONG   HTTP 状态码 414:Request-URI Too Large。

35、public static final int HTTP_UNSUPPORTED_TYPE  HTTP 状态码 415:Unsupported Media Type。

36、public static final int HTTP_SERVER_ERROR  已过时。 放错了位置,它不应该存在。HTTP 状态码 500:Internal Server Error。

37、public static final int HTTP_INTERNAL_ERROR  HTTP 状态码 500:Internal Server Error。

38、public static final int HTTP_NOT_IMPLEMENTED  HTTP 状态码 501:Not Implemented。

39、public static final int HTTP_BAD_GATEWAY  HTTP 状态码 502:Bad Gateway。

40、public static final int HTTP_UNAVAILABLE  HTTP 状态码 503:Service Unavailable。

41、public static final int HTTP_GATEWAY_TIMEOUT  HTTP 状态码 504:Gateway Timeout。

42、public static final int HTTP_VERSION  HTTP 状态码 505:HTTP Version Not Supported。


三、构造方法:

protected HttpURLConnection(URL u)   HttpURLConnection 的构造方法。

四、方法详细
1、public String getHeaderFieldKey(int n)  返回 nth 头字段的键。有些实现可能将 0th 头字段视为特殊状态行,即由 HTTP 服务器返回的状态行。在此情况下,getHeaderField(0) 返回状态行,而 getHeaderFieldKey(0) 返回 null。
覆盖:
类 URLConnection 中的 getHeaderFieldKey
参数:
n - 索引,其中 n >=0。
返回:
nth 头字段的键;如果键不存在,则返回 null。
2、public void setFixedLengthStreamingMode(int contentLength) 此方法用于在预先已知内容长度时启用没有进行内部缓冲的 HTTP 请求正文的流。

如果应用程序尝试写入的数据多于指示的内容长度,或者应用程序在写入指示的内容长度前关闭了 OutputStream,将抛出异常。

启用输出流时,不能自动处理验证和重定向。如果需要验证和重定向,则在读取响应时将抛出 HttpRetryException。可以查询此异常以获取错误的详细信息。

该方法必须在连接 URLConnection 前调用。 

参数:
contentLength - 将写入 OutputStream 的字节数。
抛出:
IllegalStateException - 如果已连接 URLConnection 或者已启用另外的流模式。
IllegalArgumentException - 如果指定的内容长度小于零。

3、public void setChunkedStreamingMode(int chunklen) 此方法用于在预先不知道内容长度时启用没有进行内部缓冲的 HTTP 请求正文的流。在此模式下,使用存储块传输编码发送请求正文。注意,并非所有 HTTP 服务器都支持此模式。 

启用输出流时,不能自动处理验证和重定向。如果需要验证和重定向,则在读取响应时将抛出 HttpRetryException。可以查询此异常以获取错误的详细信息。

该方法必须在连接 URLConnection 前调用。

参数:
chunklen - 要写入每个存储块的字节数。如果 chunklen 小于或等于零,则使用默认值。
抛出:
IllegalStateException - 如果已连接 URLConnection 或者已启用其他流模式。

4、public String getHeaderField(int n) 返回 nth 头字段的值。有些实现可能将 0th 头字段视为特殊状态行,即由 HTTP 服务器返回的状态行。

此方法可以与 getHeaderFieldKey 方法一起使用来迭代消息中的所有头。 

覆盖: 类 URLConnection 中的 getHeaderField 参数: n - 索引,其中 n>=0。  返回: nth 头字段的值;如果值不存在,则返回 null。

5、public static void setFollowRedirects(boolean set)  设置此类是否应该自动执行 HTTP 重定向(响应代码为 3xx 的请求)。默认情况下为 true。Applet 不能更改此变量。如果存在安全管理器,则此方法首先调用安全管理器的 checkSetFactory 方法来确保允许操作。这可能会导致 SecurityException 异常。
参数:
set - 指示是否进行 HTTP 重定向的 boolean 值。
抛出:
SecurityException - 如果安全管理器存在并且其 checkSetFactory 方法不允许进行此操作。
6、public static boolean getFollowRedirects()  返回指示是否应该自动执行 HTTP 重定向 (3xx) 的 boolean 值。

7、public void setInstanceFollowRedirects(boolean followRedirects)  设置此 HttpURLConnection 实例是否应该自动执行 HTTP 重定向(响应代码为 3xx 的请求)。 
默认值来自 followRedirects,其默认情况下为 true。

8、public boolean getInstanceFollowRedirects()  返回此 HttpURLConnection 的 instanceFollowRedirects 字段的值。 

9、public void setRequestMethod(String method)  throws ProtocolException 设置 URL 请求的方法,
  • GET
  • POST
  • HEAD
  • OPTIONS
  • PUT
  • DELETE
  • TRACE
以上方法之一是合法的,具体取决于协议的限制。默认方法为 GET。
抛出:
ProtocolException - 如果无法重置方法或者请求的方法对 HTTP 无效。
10、public String getRequestMethod()  获取HTTP请求方法。

11、public int getResponseCode()throws IOException  从 HTTP 响应消息获取状态码。如果无法从响应中识别任何代码(即响应不是有效的 HTTP),则返回 -1。
抛出: IOException - 如果连接到服务器时发生错误。
 HTTP/1.0 200 OK
 HTTP/1.0 401 Unauthorized
将分别返回 200 和 401。

12、public String getResponseMessage() throws IOException获取与来自服务器的响应代码一起返回的 HTTP 响应消息(如果有)。对于如下响应:
 HTTP/1.0 200 OK
 HTTP/1.0 404 Not Found
 
分别提取 String "OK" 和 "Not Found"。如果无法从响应识别任何字符(结果不是有效的 HTTP),则返回 null。

13、public long getHeaderFieldDate(String name,long Default) 返回解析为日期的指定字段的值。结果为指定字段表示的距离格林威治标准时间 1970 年 1 月 1 日的毫秒数。

有些连接类型(例如 http-ng)具有预解析头,所以存在这种形式的 getHeaderField。用于该类型的连接可重写此方法和缩短解析过程。 

覆盖:
类 URLConnection 中的 getHeaderFieldDate
参数:
name - 头字段的名称。
Default - 默认值。
返回:
字段的值,解析为日期。如果该字段缺少或有错误,则返回 Default 参数的值。
14、public abstract void disconnect()  指示近期服务器不太可能有其他请求。调用 disconnect() 并不意味着可以对其他请求重用此 HttpURLConnection 实例。


15、public abstract boolean usingProxy()  


16、public Permission getPermission() throws IOException  返回一个权限对象,其代表建立此对象表示的连接所需的权限。

如果建立连接不需要任何权限,则此方法返回 null。默认情况下,此方法返回 java.security.AllPermission。子类应重写此方法并返回一个权限对象,该对象最能代表用于建立到 URL 的连接所需的权限。例如表示 file:URL 的 URLConnection 将返回 java.io.FilePermission 对象。

返回的权限可能取决于连接的状态。例如,连接之前的权限可能不同于连接之后的权限。例如,一个 HTTP 服务器(如 foo.com)可能将连接重定向到一台不同的主机(如 bar.com)。在连接之前,连接返回的权限将代表连接到 foo.com 所需的权限,而连接之后返回的权限将是连接到 bar.com 所需的权限。

使用权限通常有两个目的:保护通过 URLConnection 获取的对象的缓存;检查接收方的权限以了解特定的 URL。第一种情况下,应在获取对象之后 再获取权限。例如,在一个 HTTP 连接中,这将代表连接到最终将从该主机获取数据的主机的权限。第二种情况下,应在连接之前 对权限进行获取和检查。 

覆盖:
类 URLConnection 中的 getPermission
返回:
代表建立此 URLConnection 表示的连接所需的权限的权限对象。
抛出:
IOException - 如果计算权限需要网络或文件 I/O 并且在计算过程中出现异常。
17、public InputStream getErrorStream()  
如果连接失败但服务器仍然发送了有用数据,则返回错误流。典型示例是,当 HTTP 服务器使用 404 响应时,将导致在连接中抛出 FileNotFoundException,但是服务器同时还会发送建议如何操作的 HTML 帮助页。

此方法不会导致启用连接。如果没有建立连接,或者在连接时服务器没有发生错误,或服务器出错但没有发送错误数据,则此方法返回 null。这是默认设置。

返回:
错误流(如果存在);如果没有发生错误、没有建立连接或服务器没有发送有用数据,则返回 null

java中的HttpURLConnection

标签:java   httpurlconnection   

原文地址:http://blog.csdn.net/u010142437/article/details/42297385

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!