URLConnection使用示例

来源:互联网 发布:网络教育2018招生时间 编辑:程序博客网 时间:2024/06/05 05:19

public abstract class java.net.URLConnection extends Object

抽象类 URLConnection 是所有类的超类,它代表应用程序和 URL 之间的通信链接。此类的实例可用于读取和写入此 URL 引用的资源。通常,创建一个到 URL 的连接需要几个步骤:


  1. 通过在 URL 上调用 openConnection 方法创建连接对象。
  2. 处理设置参数和一般请求属性。
  3. 使用 connect 方法建立到远程对象的实际连接。
  4. 远程对象变为可用,远程对象的头字段和内容变为可访问。
使用以下方法修改设置参数:
  • setAllowUserInteraction(boolean allowuserinteraction):可以通过setDefaultAllowUserInteraction 方法设置默认值
  • setDoInput(boolean doinput):true:从URL连接读取数据,默认值true
  • setDoOutput(boolean dooutput):true:将数据写入URL连接,默认值false,POST请求时需设置为true
  • setIfModifiedSince(long ifmodifiedsince)
  • setUseCaches(boolean usecaches):是否使用缓存,可以通过setDefaultUseCaches 方法设置默认值

使用以下方法修改一般请求属性: 

  • setRequestProperty(String key, String value)

 上面每个 set 方法都有一个用于获取参数值或一般请求属性值的对应 get 方法。适用的具体参数和一般请求属性取决于协议。 

在建立到远程对象的连接后,以下方法用于访问头字段和内容:

  • getContent
  • getHeaderField
  • getInputStream
  • getOutputStream

某些头字段需要经常访问。以下方法提供对这些字段的访问:

  • getContentEncoding
  • getContentLength
  • getContentType
  • getDate
  • getExpiration
  • getLastModifed

1.模拟发送GET请求

/** * GET请求 * @param url url * @param params 查询参数 * @return */public String doGet(String url, String params) {try {String urlString = url + "?" + params;URL realUrl = new URL(urlString);URLConnection conn = realUrl.openConnection();// 设置请求参数conn.setUseCaches(false);conn.setConnectTimeout(5000);// 设置请求属性conn.setRequestProperty("accept", "*/*");conn.setRequestProperty("connection", "Keep-Alive");// 使用 connect 方法建立到远程对象的实际连接。             conn.connect();                        // 远程对象可用            // 获取响应头            Map<String, List<String>> fieldMap = conn.getHeaderFields();            System.out.println(fieldMap);                        // 获取相应正文            String line = null;                        BufferedReader bufr = new BufferedReader(new InputStreamReader(conn.getInputStream()));            StringBuffer sb = new StringBuffer();            while ((line = bufr.readLine()) != null) {            sb.append(line);            }            bufr.close();            return sb.toString();} catch (Exception e) {e.printStackTrace();} return  null;}

2.模拟发送POST请求

/** * POST请求 * @param url url * @param params 参数 * @return */public String doPost(String url, String params) {try {URL realUrl = new URL(url);URLConnection conn = realUrl.openConnection();// 设置请求参数conn.setDoInput(true);// true:从URL连接读取数据,默认值true,可以不设置conn.setDoOutput(true);// true:将数据写入URL连接,默认值falseconn.setUseCaches(false);conn.setConnectTimeout(5000);// 设置请求属性conn.setRequestProperty("accept", "*/*");conn.setRequestProperty("connection", "Keep-Alive");// 设置请求体OutputStream out = conn.getOutputStream();out.write(params.getBytes());out.flush();out.close();// 使用 connect 方法建立到远程对象的实际连接。             conn.connect();                       // 远程对象可用            // 获取响应头            Map<String, List<String>> fieldMap = conn.getHeaderFields();            System.out.println(fieldMap);                        // 获取相应正文            String line = null;                        BufferedReader bufr = new BufferedReader(new InputStreamReader(conn.getInputStream()));            StringBuffer sb = new StringBuffer();            while ((line = bufr.readLine()) != null) {            sb.append(line);            }            bufr.close();            return sb.toString();} catch (Exception e) {e.printStackTrace();} return  null;}

本文参考:JDK1.6中文文档,http://blog.csdn.net/laiyaxing/article/details/51585755



原创粉丝点击