zoukankan      html  css  js  c++  java
  • java.net.URLConnectioin的http(get,post)请求(原生)

    使用Java发送这两种请求的代码大同小异,只是一些参数设置的不同。步骤如下:

    通过统一资源定位器(java.net.URL)获取连接器(java.net.URLConnection)
    设置请求的参数
    发送请求
    以输入流的形式获取返回内容
    关闭输入流

    Get

    package com.test.httprequestdemo;
    
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.net.URLConnection;
    
    public class HttpGetRequest {
    
        /**
         * Main
         * @param args
         * @throws Exception 
         */
        public static void main(String[] args) throws Exception {
            System.out.println(doGet());
        }
        
        /**
         * Get Request
         * @return
         * @throws Exception
         */
        public static String doGet() throws Exception {
            URL localURL = new URL("http://localhost:8080/test/");
            URLConnection connection = localURL.openConnection();
            HttpURLConnection httpURLConnection = (HttpURLConnection)connection;
            
            httpURLConnection.setRequestProperty("Accept-Charset", "utf-8");
            httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            
            InputStream inputStream = null;
            InputStreamReader inputStreamReader = null;
            BufferedReader reader = null;
            StringBuffer resultBuffer = new StringBuffer();
            String tempLine = null;
            
            if (httpURLConnection.getResponseCode() >= 300) {
                throw new Exception("HTTP Request is not success, Response code is " + httpURLConnection.getResponseCode());
            }
            
            try {
                inputStream = httpURLConnection.getInputStream();
                inputStreamReader = new InputStreamReader(inputStream);
                reader = new BufferedReader(inputStreamReader);
                
                while ((tempLine = reader.readLine()) != null) {
                    resultBuffer.append(tempLine);
                }
                
            } finally {
                
                if (reader != null) {
                    reader.close();
                }
                
                if (inputStreamReader != null) {
                    inputStreamReader.close();
                }
                
                if (inputStream != null) {
                    inputStream.close();
                }
                
            }
            
            return resultBuffer.toString();
        }
        
    }
    

     Post

    package com.test.httprequestdemo;
    
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.net.URLConnection;
    
    public class HttpPostRequest {
    
        /**
         * Main
         * @param args
         * @throws Exception 
         */
        public static void main(String[] args) throws Exception {
            System.out.println(doPost());
        }
        
        /**
         * Post Request
         * @return
         * @throws Exception
         */
        public static String doPost() throws Exception {
            String parameterData = "username=test";
            
            URL localURL = new URL("http://localhost:8080/test/");
            URLConnection connection = localURL.openConnection();
            HttpURLConnection httpURLConnection = (HttpURLConnection)connection;
            
            httpURLConnection.setDoOutput(true);
            httpURLConnection.setRequestMethod("POST");
            httpURLConnection.setRequestProperty("Accept-Charset", "utf-8");
            httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            httpURLConnection.setRequestProperty("Content-Length", String.valueOf(parameterData.length()));
            
            OutputStream outputStream = null;
            OutputStreamWriter outputStreamWriter = null;
            InputStream inputStream = null;
            InputStreamReader inputStreamReader = null;
            BufferedReader reader = null;
            StringBuffer resultBuffer = new StringBuffer();
            String tempLine = null;
            
            try {
                outputStream = httpURLConnection.getOutputStream();
                outputStreamWriter = new OutputStreamWriter(outputStream);
                
                outputStreamWriter.write(parameterData.toString());
                outputStreamWriter.flush();
                
                if (httpURLConnection.getResponseCode() >= 300) {
                    throw new Exception("HTTP Request is not success, Response code is " + httpURLConnection.getResponseCode());
                }
                
                inputStream = httpURLConnection.getInputStream();
                inputStreamReader = new InputStreamReader(inputStream);
                reader = new BufferedReader(inputStreamReader);
                
                while ((tempLine = reader.readLine()) != null) {
                    resultBuffer.append(tempLine);
                }
                
            } finally {
                
                if (outputStreamWriter != null) {
                    outputStreamWriter.close();
                }
                
                if (outputStream != null) {
                    outputStream.close();
                }
                
                if (reader != null) {
                    reader.close();
                }
                
                if (inputStreamReader != null) {
                    inputStreamReader.close();
                }
                
                if (inputStream != null) {
                    inputStream.close();
                }
                
            }
    
            return resultBuffer.toString();
        }
    
    }

    封装好的案例

    package com.test.utils;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.net.HttpURLConnection;
    import java.net.InetSocketAddress;
    import java.net.Proxy;
    import java.net.URL;
    import java.net.URLConnection;
    import java.util.Iterator;
    import java.util.Map;
    
    import org.apache.commons.lang.StringUtils;
    import org.apache.log4j.Logger;
    public class HttpRequestor {
        private static final Logger logger = Logger.getLogger(HttpRequestor.class);
        
        
        public static void main(String[] args) throws Exception {
        }
        
        
        private static Integer connectTimeout = null;
        private static Integer socketTimeout = null;
        private static String proxyHost = null;
        private static Integer proxyPort = null;
        
        /**
         * Do GET request
         * @param url
         * @param charset:(默认)utf-8
         * @param contentType:(默认)application/x-www-form-urlencoded
         * @return
         * @throws Exception
         * @throws IOException
         */
        public static String doGet(String url,String charset,String contentType)  {
            if(StringUtils.isBlank(url)) return null;
            if(StringUtils.isBlank(charset)) charset="utf-8";
            if(StringUtils.isBlank(contentType)) contentType = "application/x-www-form-urlencoded";
            logger.info("-------start-------request.get.http:"+url);
    
            InputStream inputStream = null;
            InputStreamReader inputStreamReader = null;
            BufferedReader reader = null;
            StringBuffer resultBuffer = new StringBuffer();
            String tempLine = null;
            try {
                URL localURL = new URL(url);
                URLConnection connection = openConnection(localURL);
                HttpURLConnection httpURLConnection = (HttpURLConnection)connection;
                httpURLConnection.setRequestProperty("Accept-Charset", charset);
                httpURLConnection.setRequestProperty("Content-Type",contentType);
                if (httpURLConnection.getResponseCode() >= 300) {
                    throw new Exception("HTTP Request is not success, Response code is " + httpURLConnection.getResponseCode());
                }
                 inputStream = httpURLConnection.getInputStream();
                    inputStreamReader = new InputStreamReader(inputStream);
                    reader = new BufferedReader(inputStreamReader);
                    
                    while ((tempLine = reader.readLine()) != null) {
                        resultBuffer.append(tempLine);
                    }
            } catch (Exception e) {
               e.printStackTrace();
            } finally {
                
                if (reader != null) {
                    try {
                        reader.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                
                if (inputStreamReader != null) {
                    try {
                        inputStreamReader.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                
                if (inputStream != null) {
                    try {
                        inputStream.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                
            }
    
            logger.info("------end--------request.get");
            return resultBuffer.toString();
        }
        
        /**
         * Do POST request
         * @param url
         * @param parameterMap
         * @param charset:(默认)utf-8
         * @param contentType:(默认)application/x-www-form-urlencoded
         * @return
         * @throws Exception 
         */
        public static String doPost(String url, Map<String,String> parameterMap,String charset,String contentType) {
            if(StringUtils.isBlank(charset)) charset="utf-8";
            if(StringUtils.isBlank(contentType)) contentType = "application/x-www-form-urlencoded";
            logger.info("-------start-------request.post.http:"+url+"?"+parameterMap.toString());
            
            StringBuffer parameterBuffer = new StringBuffer();
            if (parameterMap != null) {
                Iterator<String> iterator = parameterMap.keySet().iterator();
                String key = null;
                String value = null;
                while (iterator.hasNext()) {
                    key = iterator.next();
                    value = parameterMap.get(key);
                    parameterBuffer.append(key).append("=").append(value==null?"":value);
                    if (iterator.hasNext()) {
                        parameterBuffer.append("&");
                    }
                }
            }
            
            OutputStream outputStream = null;
            OutputStreamWriter outputStreamWriter = null;
            InputStream inputStream = null;
            InputStreamReader inputStreamReader = null;
            BufferedReader reader = null;
            StringBuffer resultBuffer = new StringBuffer();
            String tempLine = null;
            try {
                URL localURL = new URL(url);
                URLConnection connection = openConnection(localURL);
                HttpURLConnection httpURLConnection = (HttpURLConnection)connection;
                
                httpURLConnection.setDoOutput(true);
                httpURLConnection.setRequestMethod("POST");
                httpURLConnection.setRequestProperty("Accept-Charset", charset);
                httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                httpURLConnection.setRequestProperty("Content-Length", String.valueOf(parameterBuffer.length()));
                outputStream = httpURLConnection.getOutputStream();
                outputStreamWriter = new OutputStreamWriter(outputStream);
                outputStreamWriter.write(parameterBuffer.toString());
                outputStreamWriter.flush();
                
                if (httpURLConnection.getResponseCode() >= 300) {
                    throw new Exception("HTTP Request is not success, Response code is " + httpURLConnection.getResponseCode());
                }
                inputStream = httpURLConnection.getInputStream();
                inputStreamReader = new InputStreamReader(inputStream);
                reader = new BufferedReader(inputStreamReader);
                
                while ((tempLine = reader.readLine()) != null) {
                    resultBuffer.append(tempLine);
                }
            } catch (Exception e) {
                e.printStackTrace();
                
            } finally {
                
                if (outputStreamWriter != null) {
                    try {
                        outputStreamWriter.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                
                if (outputStream != null) {
                    try {
                        outputStream.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                
                if (reader != null) {
                    try {
                        reader.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                
                if (inputStreamReader != null) {
                    try {
                        inputStreamReader.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                
                if (inputStream != null) {
                    try {
                        inputStream.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                
            }
    
            logger.info("------end--------request.post");
            return resultBuffer.toString();
        }
    
        private static URLConnection openConnection(URL localURL) throws IOException {
            URLConnection connection;
            if (proxyHost != null && proxyPort != null) {
                Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort));
                connection = localURL.openConnection(proxy);
            } else {
                connection = localURL.openConnection();
            }
            renderRequest(connection);
            return connection;
        }
        
        /**
         * Render request according setting
         * @param request
         */
        private static void renderRequest(URLConnection connection) {
            
            if (connectTimeout != null) {
                connection.setConnectTimeout(connectTimeout);
            }
            
            if (socketTimeout != null) {
                connection.setReadTimeout(socketTimeout);
            }
            
        }
    
        /*
         * Getter & Setter
         */
        public Integer getConnectTimeout() {
            return connectTimeout;
        }
    
        public void setConnectTimeout(Integer connectTimeout) {
            HttpRequestor.connectTimeout = connectTimeout;
        }
    
        public Integer getSocketTimeout() {
            return socketTimeout;
        }
    
        public void setSocketTimeout(Integer socketTimeout) {
            HttpRequestor.socketTimeout = socketTimeout;
        }
    
        public String getProxyHost() {
            return proxyHost;
        }
    
        public void setProxyHost(String proxyHost) {
            HttpRequestor.proxyHost = proxyHost;
        }
    
        public Integer getProxyPort() {
            return proxyPort;
        }
    
        public void setProxyPort(Integer proxyPort) {
            HttpRequestor.proxyPort = proxyPort;
        }
    
    }
  • 相关阅读:
    win7 windows server 2008R2下 https SSL证书安装的搭配(搭配https ssl本地测试环境)
    (转载)数据库表设计-水电费缴费系统(oracle)
    考勤系统——代码分析datagrid
    (转载)模拟银行自助终端系统
    Amazon验证码机器算法识别
    [译] 理解 LSTM 网络
    循环神经网络(RNN, Recurrent Neural Networks)介绍
    机器学习之线性分类器(Linear Classifiers)——肿瘤预测实例
    word2010无法显示endnote x7插件及破解endnote x7
    ubuntu16.04+caffe训练mnist数据集
  • 原文地址:https://www.cnblogs.com/hwaggLee/p/4961866.html
Copyright © 2011-2022 走看看