HttpUrlConnection 基础使用
- 作者: 五速梦信息网
- 时间: 2026年04月04日 13:40
From https://developer.android.com/reference/java/net/HttpURLConnection.html
HttpUrlConnection:
A URLConnection with support for HTTP-specific features. See the specfor details.
Uses of this class follow a pattern:
中文释义:
一个支持HTTP特定功能的URLConnection。
使用这个类遵循以下模式:
1.通过调用URL.openConnection()来获得一个新的HttpURLConnection对象,并且将其结果强制转换为HttpURLConnection.
2.准备请求。一个请求主要的参数是它的URI。请求头可能也包含元数据,例如证书,首选数据类型和会话cookies.
3.可以选择性的上传一个请求体。HttpURLConnection实例必须设置setDoOutput(true),如果它包含一个请求体。通过将数据写入一个由getOutStream()返回的输出流来传输数据。
4.读取响应。响应头通常包含元数据例如响应体的内容类型和长度,修改日期和会话cookies。响应体可以被由getInputStream返回的输入流读取。如果响应没有响应体,则该方法会返回一个空的流。
5.关闭连接。一旦一个响应体已经被阅读后,HttpURLConnection 对象应该通过调用disconnect()关闭。断开连接会释放被一个connection占有的资源,这样它们就能被关闭或再次使用。
从上面的话以及最近的学习可以总结出:
关于HttpURLConnection的操作和使用,比较多的就是GET和POST两种了
主要的流程:
创建URL实例,打开URLConnection
设置连接参数
常用方法:
setDoInput
setDoOutput
setIfModifiedSince:设置缓存页面的最后修改时间(参考自:http://blog.csdn.net/stanleyqiu/article/details/7717235)
setUseCaches
setDefaultUseCaches
setAllowUserInteraction
setDefaultAllowUserInteraction
setRequestMethod:HttpURLConnection默认给使用Get方法
设置请求头参数
常用方法:
setRequestProperty(key,value)
addRequestProperty(key,value)
setRequestProperty和addRequestProperty的区别就是,setRequestProperty会覆盖已经存在的key的所有values,有清零重新赋值的作用。而addRequestProperty则是在原来key的基础上继续添加其他value。
常用设置:
设置请求数据类型:
连接并发送请求
connect
getOutputStream
在这里getOutStream会隐含的进行connect,所以也可以不调用connect
获取响应数据
getContent (https://my.oschina.net/zhanghc/blog/134591)
getHeaderField:获取所有响应头字段
getInputStream
getErrorStream:若HTTP响应表明发送了错误,getInputStream将抛出IOException。调用getErrorStream读取错误响应。
实例:
get请求:
post请求:
下载文件或图片到外部存储:
post上传图片和表单数据:
这里需要指出:
通过chrome的开发工具截取的头信息可以看到:



通过post上传数据时,若除了文本数据以外还要需要上传文件,则需要在指定每一条数据的Content-Disposition,name,若是文件还要指明filename,并在每条数据传输的后面用“--”加上boundary隔开,并且需要在第四行用“\r\n”换行符隔开,在最后一行也要用“--”加上boundary加上“--”隔开,否则会导致文件上传失败!
补充:
对于URLConnection,获取响应体数据的方法包括getContent和getInputStream
getInputStream上面已经提到,对于getContent的用法如下:
1、重写ContentHandler
2、实现ContentHandlerFactory接口,在createContentHandler方法中将重写的ContentHandler实例作为返回值返回
3、在HttpURLConnection.setContentHandlerFactory中实例化ContentHandlerFactory实例
代码如下:
参考自:https://my.oschina.net/zhanghc/blog/134591
- 上一篇: HttpUtil 【判断网络连接的封装类】
- 下一篇: httpsClient抓取证书





