请求响应流程
setAllowUserInteraction setDoInput setDoOutput setIfModifiedSince setUseCaches setDefaultAllowUserInteraction setDefaultUseCaches 设置请求头或响应头HTTP请求允许一个key带多个用逗号分开的values,但是HttpURLConnection只提供了单个操作的方法: setRequestProperty(key,value) addRequestProperty(key,value) setRequestProperty和addRequestProperty的区别就是,setRequestProperty会覆盖已经存在的key的所有values,有清零重新赋值的作用。而addRequestProperty则是在原来key的基础上继续添加其他value。 发送URL请求建立实际连接之后,就是发送请求,把请求参数传到服务器,这就需要使用outputStream把请求参数传给服务器: getOutputStream 获取响应请求发送成功之后,即可获取响应的状态码,如果成功既可以读取响应中的数据,获取这些数据的方法包括: getContent getHeaderField getInputStream 对于大部分请求来说,getInputStream和getContent是用的最多的。 相应的信息头用以下方法获取: getContentEncoding getContentLength getContentType getDate getExpiration getLastModifed HttpURLConnection任何网络连接都需要经过socket才能连接,HttpURLConnection不需要设置socket,所以,HttpURLConnection并不是底层的连接,而是在底层连接上的一个请求。这就是为什么HttpURLConneciton只是一个抽象类,自身不能被实例化的原因。HttpURLConnection只能通过URL.openConnection()方法创建具体的实例。 虽然底层的网络连接可以被多个HttpURLConnection实例共享,但每一个HttpURLConnection实例只能发送一个请求。请求结束之后,应该调用HttpURLConnection实例的InputStream或OutputStream的close()方法以释放请求的网络资源,不过这种方式对于持久化连接没用。对于持久化连接,得用disconnect()方法关闭底层连接的socket。 创建HttpURLConnection
URLConnection建立连接
HttpURLConneciton获取响应 // 调用HttpURLConnection连接对象的getInputStream()函数, InputStream inStrm = httpConn.getInputStream(); 设置POST参数
超时设置,防止 网络异常的情况下,可能会导致程序僵死而不继续往下执行 System.setProperty("sun.net.client.defaultConnectTimeout", "30000"); System.setProperty("sun.net.client.defaultReadTimeout", "30000");
其中: sun.net.client.defaultConnectTimeout:连接主机的超时时间(单位:毫秒) sun.net.client.defaultReadTimeout:从主机读取数据的超时时间(单位:毫秒)
JDK 1.5以前的版本,只能通过设置这两个系统属性来控制网络超时。在1.5中,还可以使用HttpURLConnection的父类URLConnection的以下两个方法: setConnectTimeout:设置连接主机超时(单位:毫秒) setReadTimeout:设置从主机读取数据超时(单位:毫秒)
例如: HttpURLConnection urlCon = (HttpURLConnection)url.openConnection(); urlCon.setConnectTimeout(30000); urlCon.setReadTimeout(30000);
来自: http://blog.csdn.net/woxueliuyun/article/details/43267365 |
小黑屋|在路上
( 蜀ICP备15035742号-1 )
GMT+8, 2025-7-9 09:28
Copyright 2015-2025 djqfx