java.net.URLConnection

来源:互联网 发布:ipad翻墙软件 编辑:程序博客网 时间:2024/06/07 08:29

public abstract class URLConnection extends Object

他有2个子类: HttpURLConnection (http请求)和 JarURLConnection (连接到JAR文件)

可以通过这个抽象类的实例, 建立应用程序和URL之间的通讯连接, 从而可以发送请求,获得response.

1 建立连接对象

2 设置请求的属性或附加参数对

3 使用connect()方法, 建立连接

4 调用 各种get方法获取返回的内容体和头信息

实例: 

package com.exodus.weistore.utils;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.URL;import java.net.URLConnection;import java.net.URLEncoder;import java.util.List;import java.util.Map;public class HttpHelper {    /**     * 发送get请求     *     * @param url  请求地址     * @param list 请求参数     *     * @return 请求结果     *     * @throws IOException     */    public static String sendGet(String url, List<HTTPParam> list)    throws IOException {        StringBuffer buffer = new StringBuffer(); //用来拼接参数        StringBuffer result = new StringBuffer(); //用来接受返回值        URL httpUrl = null; //HTTP URL类 用这个类来创建连接        URLConnection connection = null; //创建的http连接        BufferedReader bufferedReader = null; //接受连接受的参数        //如果存在参数,我们才需要拼接参数 类似于 localhost/index.html?a=a&b=b                if (list != null && list.size() > 0)         {            for (int i = 0; i < list.size(); i++)             {                buffer.append(list.get(i).getKey()).append("=")                .append(URLEncoder.encode(list.get(i).getValue(), "utf-8"));                //如果不是最后一个参数,不需要添加&                if ((i + 1) < list.size())                 {                    buffer.append("&");                }            }            url = url + "?" + buffer.toString();        }        //创建URL        httpUrl = new URL(url);        //建立连接        connection = httpUrl.openConnection();        connection.setRequestProperty("accept",         "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");        connection.setRequestProperty("connection", "keep-alive");        connection.setRequestProperty("user-agent",         "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0");        connection.connect();        //接受连接返回参数        bufferedReader = new BufferedReader(        new InputStreamReader(connection.getInputStream()));        String line;        while ((line = bufferedReader.readLine()) != null)         {            result.append(line);        }        bufferedReader.close();        return result.toString();    }     /**     * 发送Post请求     *     * @param url  请求地址     * @param list 请求参数     *     * @return 请求结果     *     * @throws IOException     */    public static String sendPost(String url, List<HTTPParam> list)     throws IOException {        StringBuffer buffer = new StringBuffer(); //用来拼接参数        StringBuffer result = new StringBuffer(); //用来接受返回值        URL httpUrl = null; //HTTP URL类 用这个类来创建连接        URLConnection connection = null; //创建的http连接        PrintWriter printWriter = null;        BufferedReader bufferedReader; //接受连接受的参数        //创建URL        httpUrl = new URL(url);        //建立连接        connection = httpUrl.openConnection();        connection.setRequestProperty("accept",         "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");        connection.setRequestProperty("connection", "keep-alive");        connection.setRequestProperty("user-agent",         "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0");        connection.setDoOutput(true);        connection.setDoInput(true);        printWriter = new PrintWriter(connection.getOutputStream());        if (list != null && list.size() > 0)         {            for (int i = 0; i < list.size(); i++)             {                buffer.append(list.get(i).getKey()).append("=")                .append(URLEncoder.encode(list.get(i).getValue(), "utf-8"));                //如果不是最后一个参数,不需要添加&                if ((i + 1) < list.size())                 {                    buffer.append("&");                }            }        }        printWriter.print(buffer.toString());        printWriter.flush();        connection.connect();        //接受连接返回参数        bufferedReader = new BufferedReader(        new InputStreamReader(connection.getInputStream()));        String line;        while ((line = bufferedReader.readLine()) != null)         {            result.append(line);        }        bufferedReader.close();        return result.toString();    }        /**     * 发送get请求     *     * @param url  请求地址     * @param list 请求参数     *     * @return 请求结果     *     * @throws IOException     */    public static String sendGet(String url, Map<String, String> map)    throws IOException {        StringBuffer buffer = new StringBuffer(); //用来拼接参数        StringBuffer result = new StringBuffer(); //用来接受返回值        URL httpUrl = null; //HTTP URL类 用这个类来创建连接        URLConnection connection = null; //创建的http连接        BufferedReader bufferedReader = null; //接受连接受的参数        //如果存在参数,我们才需要拼接参数 类似于 localhost/index.html?a=a&b=b                if (map != null && !map.isEmpty())        {        for (Map.Entry<String, String> entry : map.entrySet())        {        buffer.append(entry.getKey()).append("=")        .append(URLEncoder.encode(entry.getValue(), "utf-8"))        .append("&");        }        //拼完后,去掉最后一个&        buffer.deleteCharAt(buffer.length() - 1);        url = url + "?" + buffer.toString();        }                //创建URL        httpUrl = new URL(url);        //建立连接        connection = httpUrl.openConnection();        connection.setRequestProperty("accept",         "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");        connection.setRequestProperty("connection", "keep-alive");        connection.setRequestProperty("user-agent",         "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0");        connection.connect();        //接受连接返回参数        bufferedReader = new BufferedReader(        new InputStreamReader(connection.getInputStream()));        String line;        while ((line = bufferedReader.readLine()) != null)         {            result.append(line);        }        bufferedReader.close();        return result.toString();    }     /**     * 发送Post请求     *     * @param url  请求地址     * @param list 请求参数     *     * @return 请求结果     *     * @throws IOException     */    public static String sendPost(String url, Map<String, String> map)     throws IOException     {        StringBuffer buffer = new StringBuffer(); //用来拼接参数        StringBuffer result = new StringBuffer(); //用来接受返回值        URL httpUrl = null; //HTTP URL类 用这个类来创建连接        URLConnection connection = null; //创建的http连接        PrintWriter printWriter = null;        BufferedReader bufferedReader; //接受连接受的参数        //创建URL        httpUrl = new URL(url);        //建立连接        connection = httpUrl.openConnection();        connection.setRequestProperty("accept",         "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");        connection.setRequestProperty("connection", "keep-alive");        connection.setRequestProperty("user-agent",         "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0");        connection.setDoOutput(true);        connection.setDoInput(true);        printWriter = new PrintWriter(connection.getOutputStream());        if (map != null && !map.isEmpty())        {        for (Map.Entry<String, String> entry : map.entrySet())        {        buffer.append(entry.getKey()).append("=")        .append(URLEncoder.encode(entry.getValue(), "utf-8"))        .append("&");        }        //拼完后,去掉最后一个&        buffer.deleteCharAt(buffer.length() - 1);                }                printWriter.print(buffer.toString());        printWriter.flush();        connection.connect();        //接受连接返回参数        bufferedReader = new BufferedReader(        new InputStreamReader(connection.getInputStream()));        String line;        while ((line = bufferedReader.readLine()) != null)         {            result.append(line);        }        bufferedReader.close();        return result.toString();    }}


0 0