一、URLConnection简述
1、是一个抽象类
表示指向URL指定资源的活动连接。
2、依赖于Socket类实现网络连接
URLConnection类提供了比Socket类更易于使用、更高级的网络连接抽象。
3、贴近HTTP协议
4、继承关系
java.lang.Object
—java.net.URLConnection
--------java.net.HttpURLConnection
5、代表应用程序和URL之间的通信连接
二、创建一个到URL的连接的步骤
(1)通过在URL上调用openConnection方法创建连接对象
(2) 处理设置参数和一般请求属性
(3)使用connect方法建立到远程对象的实际连接
(4)远程对象变为可用。远程对象的头字段和内容变为可访问
三、HttpURLConnection
1、每个HttpURLConnection实例都可用于生成单个请求。
其他实例可以透明地共享连接到HTTP服务器的基础网络。请求后在HttpURLConnection的InputStream或OutputStream上调用close()方法可以释放与此实例相关联的网络资源,但对共享的持久连接没有任何影响。
2、对于Connection的对象的设置具有顺序
①connection的设置(set函数)必须在函数执行之前完成;
②OutputStream的写操作必须在InputStreeam读操作之前。
四、简单用法
1、创建连接
URL url = new URL("http://localhost:8080/TestHttpURLConnectionPro/index.jsp");
URLConnection rulConnection = url.openConnection();
// 此处的urlConnection对象实际上是根据URL的
// 请求协议(此处是http)生成的URLConnection类
// 的子类HttpURLConnection,故此处最好将其转化
// 为HttpURLConnection类型的对象,以便用到
// HttpURLConnection更多的API.如下:
HttpURLConnection httpUrlConnection = (HttpURLConnection) rulConnection;
2、设置Connection参数
// 设置是否向httpUrlConnection输出,因为这个是post请求,参数要放在
// http正文内,因此需要设为true, 默认情况下是false;
httpUrlConnection.setDoOutput(true);
// 设置是否从httpUrlConnection读入,默认情况下是true;
httpUrlConnection.setDoInput(true);
// Post 请求不能使用缓存
httpUrlConnection.setUseCaches(false);
// 设定传送的内容类型是可序列化的java对象
// (如果不设此项,在传送序列化对象时,当WEB服务默认的不是这种类型时可能抛java.io.EOFException)
httpUrlConnection.setRequestProperty("Content-type", "application/x-java-serialized-object");
// 设定请求的方法为"POST",默认是GET
httpUrlConnection.setRequestMethod("POST");
// 连接,从上述第2条中url.openConnection()至此的配置必须要在connect之前完成,
httpUrlConnection.connect();