在Java.net包下有一个类HttpURLConnection,其继承结构如下:
1 | public abstract class HttpURLConnection extends URLConnection |
它的父类URLConnection也是一个抽象类。要想取得URLConnection对象,只能通过java.net.URL下的如下方法:
1 | public URLConnection openConnection() throws java.io.IOException; |
URLConnection主要的成员方法:
1 | //设置建立连接后,产生从服务器读取信息的输入流,默认为true |
1 |
在setRequestProperty()方法中可以设置请求头信息。请求头信息将和请求命令一起被发送到服务器,例如:
1 | Accept:image/webp,image/apng,image/*,*/*;q=0.8 |
如何查看有哪些头信息可以设置呢?这里以百度首页为例,我用的chrome浏览器(其他浏览器大同小异),按F12打开开发者工具,选择网络(network),然后刷新一下正在浏览的页面,可以看到很多的图片、css、js等,随便点开一个,右侧的Request Headers下的信息,就是请求头信息。
HttpURLConnection主要的扩展方法:
1 | //method必须写大写字母 |
值得注意的是,setRequestMethod方法的参数必须写大写,以GET请求为例,如果写小写,会报如下错误:
1 | Exception in thread "main" java.net.ProtocolException: Invalid HTTP method: get |
支持的HTTP请求为GET、POST、HEAD、OPTIONS、PUT、DELETE、TRACE,默认为GET请求。
若为POST请求,则需要设置setDoOutput(boolean dooutput)为true,否则会报如下错误:
1 | Exception in thread "main" java.net.ProtocolException: cannot write to a URLConnection if doOutput=false - call setDoOutput(true) |
(未完待续)