- 浏览: 694345 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
masuweng:
写的详细
Java中的枚举 -
zmwxiaoming:
java unix时间戳转换 -
g21121:
lhq1013 写道请问 我通过什么方式可以获取到tomca ...
tomcat优化 -
lhq1013:
请问 我通过什么方式可以获取到tomcat的qps值?
tomcat优化 -
zengshaotao:
condition的测试代码有问题,一个await的线程醒来之 ...
Java并发之Condition与Lock
在我们访问网站的时候会经常碰到页面没找到这种情况,例如:
对于csdn的提示,想必绝大多数人都能理解,因为csdn是一个技术型网站,上这个网站的基本都是程序员,404对于程序员很熟悉,是页面没找到的提示代码。但是对于不懂编程或对web方面编程不了解的人就迷糊了,因为他根本不知道404的意思,当然其他网站只会显示“页面未找到”类似的提示,而不是专业性很强的404。
在web服务器中,我们会看到类似如下配置:
<error-page> <error-code>403</error-code> <location>/403.jsp</location> </error-page> <error-page> <error-code>404</error-code> <location>/404.jsp</location> </error-page> <error-page> <error-code>500</error-code> <location>/500.jsp</location> </error-page>
这些错误代码其实都存在于HttpURLConnection这个类中,例如HTTP_OK=200.
下面我们就看看HttpURLConnection这个类到底是干什么用的。
从类名看它应该是一个与httpurl连接有关的类,打开源代码或api(http://docs.oracle.com/javase/1.5.0/docs/api/):
api写道
支持 HTTP 特定功能的 URLConnection。
每个 HttpURLConnection 实例都可用于生成单个请求,但是其他实例可以透明地共享连接到 HTTP 服务器的基础网络。请求后在 HttpURLConnection 的 InputStream 或 OutputStream 上调用 close() 方法可以释放与此实例关联的网络资源,但对共享的持久连接没有任何影响。如果在调用 disconnect() 时持久连接空闲,则可能关闭基础套接字。
每个 HttpURLConnection 实例都可用于生成单个请求,但是其他实例可以透明地共享连接到 HTTP 服务器的基础网络。请求后在 HttpURLConnection 的 InputStream 或 OutputStream 上调用 close() 方法可以释放与此实例关联的网络资源,但对共享的持久连接没有任何影响。如果在调用 disconnect() 时持久连接空闲,则可能关闭基础套接字。
HttpURLConnection类继承自URLConnection类,URLConnection我们稍后再说。
HttpURLConnection有一些默认的参数如请求类型"GET", "POST", "HEAD", "OPTIONS", "PUT", "DELETE", "TRACE",我就不全部介绍了,主要说说请求返回值returnCode.
先看一点代码:
URL url = new URL("http://g21121.iteye.com/"); HttpURLConnection httpUrlConnection = (HttpURLConnection) url.openConnection(); int returnCode = httpUrlConnection.getResponseCode(); if (returnCode == HttpURLConnection.HTTP_OK) System.out.println("测试成功"); else System.out.println("测试失败,returnCode:"+returnCode);
这段代码很简单,就是请求一个url地址,看返回结果是什么,这种代码往往用来测试一些服务的连接畅通。
我们看到返回结果是200也就是HTTP_OK说明连接通畅,测试成功。
在HttpURLConnection中还有大量其他的returnCode:
引用自网络 写道
100 Continue 初始的请求已经接受,客户应当继续发送请求的其余部分。(HTTP 1.1新)
101 Switching Protocols 服务器将遵从客户的请求转换到另外一种协议(HTTP 1.1新)
200 OK 一切正常,对GET和POST请求的应答文档跟在后面。
201 Created 服务器已经创建了文档,Location头给出了它的URL。
202 Accepted 已经接受请求,但处理尚未完成。
203 Non-Authoritative Information 文档已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝(HTTP 1.1新)。
204 No Content 没有新文档,浏览器应该继续显示原来的文档。如果用户定期地刷新页面,而Servlet可以确定用户文档足够新,这个状态代码是很有用的。
205 Reset Content 没有新的内容,但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容(HTTP 1.1新)。
206 Partial Content 客户发送了一个带有Range头的GET请求,服务器完成了它(HTTP 1.1新)。
300 Multiple Choices 客户请求的文档可以在多个位置找到,这些位置已经在返回的文档内列出。如果服务器要提出优先选择,则应该在Location应答头指明。
301 Moved Permanently 客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL。
302 Found 类似于301,但新的URL应该被视为临时性的替代,而不是永久性的。注意,在HTTP1.0中对应的状态信息是“Moved Temporatily”。
出现该状态代码时,浏览器能够自动访问新的URL,因此它是一个很有用的状态代码。
注意这个状态代码有时候可以和301替换使用。例如,如果浏览器错误地请求http://host/~user (缺少了后面的斜杠),有的服务器返回301,有的则返回302。
严格地说,我们只能假定只有当原来的请求是GET时浏览器才会自动重定向。请参见307。
303 See Other 类似于301/302,不同之处在于,如果原来的请求是POST,Location头指定的重定向目标文档应该通过GET提取(HTTP 1.1新)。
304 Not Modified 客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。
305 Use Proxy 客户请求的文档应该通过Location头所指明的代理服务器提取(HTTP 1.1新)。
307 Temporary Redirect 和302(Found)相同。许多浏览器会错误地响应302应答进行重定向,即使原来的请求是POST,即使它实际上只能在POST请求的应答是303时才能重定向。由于这个原因,HTTP 1.1新增了307,以便更加清除地区分几个状态代码:当出现303应答时,浏览器可以跟随重定向的GET和POST请求;如果是307应答,则浏览器只能跟随对GET请求的重定向。(HTTP 1.1新)
400 Bad Request 请求出现语法错误。
401 Unauthorized 客户试图未经授权访问受密码保护的页面。应答中会包含一个WWW-Authenticate头,浏览器据此显示用户名字/密码对话框,然后在填写合适的Authorization头后再次发出请求。
403 Forbidden 资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致。
404 Not Found 无法找到指定位置的资源。这也是一个常用的应答。
405 Method Not Allowed 请求方法(GET、POST、HEAD、Delete、PUT、TRACE等)对指定的资源不适用。(HTTP 1.1新)
406 Not Acceptable 指定的资源已经找到,但它的MIME类型和客户在Accpet头中所指定的不兼容(HTTP 1.1新)。
407 Proxy Authentication Required 类似于401,表示客户必须先经过代理服务器的授权。(HTTP 1.1新)
408 Request Timeout 在服务器许可的等待时间内,客户一直没有发出任何请求。客户可以在以后重复同一请求。(HTTP 1.1新)
409 Conflict 通常和PUT请求有关。由于请求和资源的当前状态相冲突,因此请求不能成功。(HTTP 1.1新)
410 Gone 所请求的文档已经不再可用,而且服务器不知道应该重定向到哪一个地址。它和404的不同在于,返回407表示文档永久地离开了指定的位置,而404表示由于未知的原因文档不可用。(HTTP 1.1新)
411 Length Required 服务器不能处理请求,除非客户发送一个Content-Length头。(HTTP 1.1新)
412 Precondition Failed 请求头中指定的一些前提条件失败(HTTP 1.1新)。
413 Request Entity Too Large 目标文档的大小超过服务器当前愿意处理的大小。如果服务器认为自己能够稍后再处理该请求,则应该提供一个Retry-After头(HTTP 1.1新)。
414 Request URI Too Long URI太长(HTTP 1.1新)。
416 Requested Range Not Satisfiable 服务器不能满足客户在请求中指定的Range头。(HTTP 1.1新)
500 Internal Server Error 服务器遇到了意料不到的情况,不能完成客户的请求。
501 Not Implemented 服务器不支持实现请求所需要的功能。例如,客户发出了一个服务器不支持的PUT请求。
502 Bad Gateway 服务器作为网关或者代理时,为了完成请求访问下一个服务器,但该服务器返回了非法的应答。
503 Service Unavailable 服务器由于维护或者负载过重未能应答。例如,Servlet可能在数据库连接池已满的情况下返回503。服务器返回503时可以提供一个Retry-After头。
504 Gateway Timeout 由作为代理或网关的服务器使用,表示不能及时地从远程服务器获得应答。(HTTP 1.1新)
505 HTTP Version Not Supported 服务器不支持请求中所指明的HTTP版本。(HTTP 1.1新)
101 Switching Protocols 服务器将遵从客户的请求转换到另外一种协议(HTTP 1.1新)
200 OK 一切正常,对GET和POST请求的应答文档跟在后面。
201 Created 服务器已经创建了文档,Location头给出了它的URL。
202 Accepted 已经接受请求,但处理尚未完成。
203 Non-Authoritative Information 文档已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝(HTTP 1.1新)。
204 No Content 没有新文档,浏览器应该继续显示原来的文档。如果用户定期地刷新页面,而Servlet可以确定用户文档足够新,这个状态代码是很有用的。
205 Reset Content 没有新的内容,但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容(HTTP 1.1新)。
206 Partial Content 客户发送了一个带有Range头的GET请求,服务器完成了它(HTTP 1.1新)。
300 Multiple Choices 客户请求的文档可以在多个位置找到,这些位置已经在返回的文档内列出。如果服务器要提出优先选择,则应该在Location应答头指明。
301 Moved Permanently 客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL。
302 Found 类似于301,但新的URL应该被视为临时性的替代,而不是永久性的。注意,在HTTP1.0中对应的状态信息是“Moved Temporatily”。
出现该状态代码时,浏览器能够自动访问新的URL,因此它是一个很有用的状态代码。
注意这个状态代码有时候可以和301替换使用。例如,如果浏览器错误地请求http://host/~user (缺少了后面的斜杠),有的服务器返回301,有的则返回302。
严格地说,我们只能假定只有当原来的请求是GET时浏览器才会自动重定向。请参见307。
303 See Other 类似于301/302,不同之处在于,如果原来的请求是POST,Location头指定的重定向目标文档应该通过GET提取(HTTP 1.1新)。
304 Not Modified 客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。
305 Use Proxy 客户请求的文档应该通过Location头所指明的代理服务器提取(HTTP 1.1新)。
307 Temporary Redirect 和302(Found)相同。许多浏览器会错误地响应302应答进行重定向,即使原来的请求是POST,即使它实际上只能在POST请求的应答是303时才能重定向。由于这个原因,HTTP 1.1新增了307,以便更加清除地区分几个状态代码:当出现303应答时,浏览器可以跟随重定向的GET和POST请求;如果是307应答,则浏览器只能跟随对GET请求的重定向。(HTTP 1.1新)
400 Bad Request 请求出现语法错误。
401 Unauthorized 客户试图未经授权访问受密码保护的页面。应答中会包含一个WWW-Authenticate头,浏览器据此显示用户名字/密码对话框,然后在填写合适的Authorization头后再次发出请求。
403 Forbidden 资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致。
404 Not Found 无法找到指定位置的资源。这也是一个常用的应答。
405 Method Not Allowed 请求方法(GET、POST、HEAD、Delete、PUT、TRACE等)对指定的资源不适用。(HTTP 1.1新)
406 Not Acceptable 指定的资源已经找到,但它的MIME类型和客户在Accpet头中所指定的不兼容(HTTP 1.1新)。
407 Proxy Authentication Required 类似于401,表示客户必须先经过代理服务器的授权。(HTTP 1.1新)
408 Request Timeout 在服务器许可的等待时间内,客户一直没有发出任何请求。客户可以在以后重复同一请求。(HTTP 1.1新)
409 Conflict 通常和PUT请求有关。由于请求和资源的当前状态相冲突,因此请求不能成功。(HTTP 1.1新)
410 Gone 所请求的文档已经不再可用,而且服务器不知道应该重定向到哪一个地址。它和404的不同在于,返回407表示文档永久地离开了指定的位置,而404表示由于未知的原因文档不可用。(HTTP 1.1新)
411 Length Required 服务器不能处理请求,除非客户发送一个Content-Length头。(HTTP 1.1新)
412 Precondition Failed 请求头中指定的一些前提条件失败(HTTP 1.1新)。
413 Request Entity Too Large 目标文档的大小超过服务器当前愿意处理的大小。如果服务器认为自己能够稍后再处理该请求,则应该提供一个Retry-After头(HTTP 1.1新)。
414 Request URI Too Long URI太长(HTTP 1.1新)。
416 Requested Range Not Satisfiable 服务器不能满足客户在请求中指定的Range头。(HTTP 1.1新)
500 Internal Server Error 服务器遇到了意料不到的情况,不能完成客户的请求。
501 Not Implemented 服务器不支持实现请求所需要的功能。例如,客户发出了一个服务器不支持的PUT请求。
502 Bad Gateway 服务器作为网关或者代理时,为了完成请求访问下一个服务器,但该服务器返回了非法的应答。
503 Service Unavailable 服务器由于维护或者负载过重未能应答。例如,Servlet可能在数据库连接池已满的情况下返回503。服务器返回503时可以提供一个Retry-After头。
504 Gateway Timeout 由作为代理或网关的服务器使用,表示不能及时地从远程服务器获得应答。(HTTP 1.1新)
505 HTTP Version Not Supported 服务器不支持请求中所指明的HTTP版本。(HTTP 1.1新)
发表评论
-
Java多线程
2016-04-18 11:12 3进程(Process)是计算机中的程序关于 ... -
将properties内容放置到map中
2012-05-24 14:37 2536代码比较简单: private static Map< ... -
java io之输入篇
2012-05-15 15:44 2216不知不觉java ... -
c3p0的配置
2012-05-11 14:37 2677c3p0是一个开源的JDBC连 ... -
tomcat的多域名、虚拟主机配置
2012-05-10 13:48 1880众所周知apache可以配置多域名和虚拟主机,而且配置起来比较 ... -
struts处理自定义异常
2012-03-08 16:35 1429很多时候我们会用到自 ... -
spring注入servlet
2012-03-08 14:17 1411传统的配置方法是无法将bean或属性直接注入到servlet中 ... -
Java事务处理
2012-03-01 15:24 1308一、什么是Ja ... -
分页查询实现
2012-02-20 11:21 2436在查询列表时我们常常会用到分页,分页的好处就是减少数据交换,每 ... -
自定义网站图标
2012-02-17 14:07 1733我们发现很多网站的地址栏上都会显示一个小图标,类似于: 其 ... -
跳出iframe返回外层页面
2012-02-15 16:36 2903在web开发过程中难免要用到iframe,但当连接超时或跳转到 ... -
spring中hibernate及事务配置
2012-02-15 14:19 2000hibernate的sessionFactory配置: &l ... -
java上传
2012-02-15 14:05 1391我们在做web项目中通常会遇到上传文件的情况,用struts等 ... -
简单的防止重复登录实现
2012-02-14 17:24 2701这个实现利用的是struts2的拦截器,大家也可以试着用fil ... -
java中的枚举(enmu)
2012-02-14 14:33 5016从jdk1.5开始,java增加了enum(枚举)这个类型,但 ... -
nginx的配置及使用
2012-02-09 13:59 3952Nginx ("engine x") 是一 ... -
java中的filter
2012-02-03 11:21 2816上一篇说了 ... -
java与servlet
2012-01-16 14:12 1329servlet 搞java web开发的人一定不会陌生,而且 ... -
java 单例模式
2012-01-10 17:23 1133想必单例模式大家都不会陌生,有如下两种方式来实现单例模式: ... -
java类型与数据库类型
2011-12-30 10:58 2803很多时候我们用hibernate的时候往往并不是十分关心数据库 ...
相关推荐
无论GET还是POST,都可以通过`InputStream`读取服务器返回的数据,通过`HttpURLConnection.getResponseCode()`检查服务器响应的状态码,以判断请求是否成功。 在实际开发中,HTTP URLConnection相比于其他HTTP...
本例子是关于如何将`AsyncTask`与`HttpURLConnection`结合,实现一个简单的网络请求。 `AsyncTask`是Android提供的轻量级异步任务框架,它允许开发者在后台线程执行耗时操作,并在主线程更新UI。`AsyncTask`包含三...
调用URL对象的openConnection( )来获取HttpURLConnection对象实例: HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 设置HTTP请求使用的方法:conn.setRequestMethod("GET"); 设置连接超时,...
HttpURLConnection是Java标准库中的一个类,它是HTTP协议的基础实现,用于在客户端和服务器之间建立网络连接并进行数据传输。这个类是Java程序员在进行网络编程时常用的工具,尤其是在发送HTTP请求和处理响应时。本...
请求发送后,`HttpURLConnection`会返回响应码,通常200表示成功。例如: ```java int responseCode = connection.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { // 成功 } else { /...
正文:我在使用HttpURLConnection.getResponseCode()的时候直接报错是IOException错误,responseCode = -1。一直想不明白,同一个程序我调用了两次,结果有一个链接一直OK,另一个却一直报这个错误。后来发现两个...
if (responseCode == HttpURLConnection.HTTP_OK) { // 如果状态码为200 BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String inputLine; StringBuffer ...
完成请求后,可以通过`getResponseCode()`获取服务器返回的HTTP状态码,来判断请求是否成功。例如,200表示成功,404表示未找到,500表示服务器内部错误。 5. **数据读取**: 成功发送请求后,可以使用`...
`HttpURLConnection`是Java标准库中的一个类,用于建立与互联网上指定资源的连接。它继承自`URLConnection`,专门用于HTTP请求。通过`HttpURLConnection`,我们可以轻松地构建HTTP请求,并处理服务器响应。 #### ...
在Java编程语言中,HTTPURLConnection是Java标准库提供的一个接口,用于通过HTTP协议与服务器进行通信。这个接口在java.net包下,是处理HTTP请求的基础类,包括发送GET、POST等请求,以及文件上传功能。在本文中,...
- `getResponseCode()`: 获取服务器返回的状态码。 - `getInputStream()`: 获取服务器返回的数据流。 2. 封装GET请求 对于GET请求,我们只需要设置URL和请求头,然后连接并获取响应数据。在封装的GET方法中,可以...
在Android开发中,HTTPURLConnection是Java标准库提供的一种与服务器进行HTTP通信的API,它是HttpClient的一个轻量级替代方案,适用于简单的HTTP请求。本篇将深入讲解如何使用HTTPURLConnection获取服务器数据并进行...
HttpURLConnection是Java标准库中的一个类,它允许Android应用程序与HTTP服务器进行通信,执行GET、POST等请求。下面我们将详细讨论如何利用HttpURLConnection上传图片。 首先,我们需要获取到用户选择或拍摄的图片...
在Java编程中,HTTPURLConnection是Java标准库提供的一种用于处理HTTP连接的类,它允许我们发送HTTP请求并接收响应。然而,HTTP协议本身是无状态的,这意味着每次请求都是独立的,不会记住之前的交互,这对于需要...
首先,`HttpURLConnection`是`java.net.URL`类的子类,它可以建立与指定URL所代表的服务器的连接,并执行HTTP协议的各种操作,如GET、POST等。在这个场景下,我们使用POST方法,因为我们需要将本地的文件或目录内容...
在Android开发中,HTTP请求是应用与服务器交互的重要方式之一,`HttpURLConnection`是Java标准库提供的一种HTTP客户端API,适合用于发送POST请求。在这个"Android httpUrlConnection Post方式访问网络简单demo"中,...
4. **处理响应码**:`getResponseCode()`返回服务器返回的HTTP状态码,比如200表示成功,404表示未找到,500表示服务器错误等。 5. **读取响应**:使用`getInputStream()`获取服务器返回的数据流,可以读取HTML、...
2. 调用`openConnection()`方法获取`URLConnection`对象,通常会返回`HttpURLConnection`实例。 3. 设置连接属性,如超时时间、是否允许重定向等。 4. 调用`setRequestMethod("GET")`设置请求方法为GET。 5. 执行...
在Java编程中,`HttpURLConnection`是Java标准库提供的一种HTTP客户端接口,允许我们实现与HTTP服务器的通信。本文将深入探讨`HttpURLConnection`的基本用法、特性及其在网络交互中的应用。 首先,`...
HttpUrlConnection是java.net.URL类的一个子类,提供了与URL建立连接并执行HTTP协议的方法。它支持多种HTTP方法,如GET、POST、PUT、DELETE等,同时具备处理HTTP头、设置超时、处理重定向等功能。相较于早期的Java ...