如何全面掌握JAVA中HttpURLConnection的使用技巧?
- 内容介绍
- 文章标签
- 相关推荐
本文共计619个文字,预计阅读时间需要3分钟。
针对JDK中URLConnection连接Servlet的问题,网络上有一些讨论,但往往只是说明了某一两个或几个具体问题,并以FAQ的形式来解决问题。相比之下,零散的信息较少。现在,对这类使用的经验基本集中在项目中的应用上。
针对JDK中的URLConnection连接Servlet的问题,网上有虽然有所涉及,但是只是说明了某一个或几个问题,是以FAQ的方式来解决的,而且比较零散,现在对这个类的使用就本人在项目中的使用经验做如下总结:
1:> URL请求的类别:
分为二类,GET与POST请求。二者的区别在于:
a:) get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet,
b:) post与get的不同之处在于post的参数不是放在URL字串里面,而是放在localhost:8080/TestHttpURLConnectionPro/index.jsp"); URLConnection rulConnection = url.openConnection();// 此处的urlConnection对象实际上是根据URL的 // 请求协议(此处是www.ee2ee.com/"; URL url = new URL(szUrl); HttpURLConnection urlCon = (HttpURLConnection)url.openConnection();
HttpURLConnection是基于HTTP协议的,其底层通过socket通信实现。如果不设置超时(timeout),在网络异常的情况下,可能会导致程序僵死而不继续往下执行。可以通过以下两个语句来设置相应的超时:
System.setProperty("sun.net.client.defaultConnectTimeout", 超时毫秒数字符串); System.setProperty("sun.net.client.defaultReadTimeout", 超时毫秒数字符串);
其中:
sun.net.client.defaultConnectTimeout:连接主机的超时时间(单位:毫秒)
sun.net.client.defaultReadTimeout:从主机读取数据的超时时间(单位:毫秒)
例如:
System.setProperty("sun.net.client.defaultConnectTimeout", "30000"); System.setProperty("sun.net.client.defaultReadTimeout", "30000");
JDK 1.5以前的版本,只能通过设置这两个系统属性来控制网络超时。在1.5中,还可以使用HttpURLConnection的父类URLConnection的以下两个方法:
setConnectTimeout:设置连接主机超时(单位:毫秒)
setReadTimeout:设置从主机读取数据超时(单位:毫秒)
例如:
HttpURLConnection urlCon = (HttpURLConnection)url.openConnection(); urlCon.setConnectTimeout(30000); urlCon.setReadTimeout(30000);
需要注意的是,笔者在JDK1.4.2环境下,发现在设置了defaultReadTimeout的情况下,如果发生网络超时,HttpURLConnection会自动重新提交一次请求,出现一次请求调用,请求服务器两次的问题(Trouble)。我认为这是JDK1.4.2的一个bug。在JDK1.5.0中,此问题已得到解决,不存在自动重发现象。out", "30000");
以上就是一文读懂JDK中的HttpURLConnection用法的详细内容,更多关于JDK中的HttpURLConnection的资料请关注易盾网络其它相关文章!
本文共计619个文字,预计阅读时间需要3分钟。
针对JDK中URLConnection连接Servlet的问题,网络上有一些讨论,但往往只是说明了某一两个或几个具体问题,并以FAQ的形式来解决问题。相比之下,零散的信息较少。现在,对这类使用的经验基本集中在项目中的应用上。
针对JDK中的URLConnection连接Servlet的问题,网上有虽然有所涉及,但是只是说明了某一个或几个问题,是以FAQ的方式来解决的,而且比较零散,现在对这个类的使用就本人在项目中的使用经验做如下总结:
1:> URL请求的类别:
分为二类,GET与POST请求。二者的区别在于:
a:) get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet,
b:) post与get的不同之处在于post的参数不是放在URL字串里面,而是放在localhost:8080/TestHttpURLConnectionPro/index.jsp"); URLConnection rulConnection = url.openConnection();// 此处的urlConnection对象实际上是根据URL的 // 请求协议(此处是www.ee2ee.com/"; URL url = new URL(szUrl); HttpURLConnection urlCon = (HttpURLConnection)url.openConnection();
HttpURLConnection是基于HTTP协议的,其底层通过socket通信实现。如果不设置超时(timeout),在网络异常的情况下,可能会导致程序僵死而不继续往下执行。可以通过以下两个语句来设置相应的超时:
System.setProperty("sun.net.client.defaultConnectTimeout", 超时毫秒数字符串); System.setProperty("sun.net.client.defaultReadTimeout", 超时毫秒数字符串);
其中:
sun.net.client.defaultConnectTimeout:连接主机的超时时间(单位:毫秒)
sun.net.client.defaultReadTimeout:从主机读取数据的超时时间(单位:毫秒)
例如:
System.setProperty("sun.net.client.defaultConnectTimeout", "30000"); System.setProperty("sun.net.client.defaultReadTimeout", "30000");
JDK 1.5以前的版本,只能通过设置这两个系统属性来控制网络超时。在1.5中,还可以使用HttpURLConnection的父类URLConnection的以下两个方法:
setConnectTimeout:设置连接主机超时(单位:毫秒)
setReadTimeout:设置从主机读取数据超时(单位:毫秒)
例如:
HttpURLConnection urlCon = (HttpURLConnection)url.openConnection(); urlCon.setConnectTimeout(30000); urlCon.setReadTimeout(30000);
需要注意的是,笔者在JDK1.4.2环境下,发现在设置了defaultReadTimeout的情况下,如果发生网络超时,HttpURLConnection会自动重新提交一次请求,出现一次请求调用,请求服务器两次的问题(Trouble)。我认为这是JDK1.4.2的一个bug。在JDK1.5.0中,此问题已得到解决,不存在自动重发现象。out", "30000");
以上就是一文读懂JDK中的HttpURLConnection用法的详细内容,更多关于JDK中的HttpURLConnection的资料请关注易盾网络其它相关文章!

