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;
        }
    
    }
  • 相关阅读:
    Common Lisp 参数传递的几种形式
    EF架构~基于EF数据层的实现
    标准架构~业务层到底是否应该关注数据持久化的方式
    Redis学习笔记~Redis主从服务器,读写分离
    Redis学习笔记~是时候为Redis实现一个仓储了,RedisRepository来了
    MVVM架构~knockoutjs系列之数组的$index和$data
    【Oracle】-【sqlplus / as sysdba登录报错问题】-新用户使用sqlplus / as sysdba登录报错
    Android---App Widget(一)
    Mit 分布式系统导论,Distributed Systems ,lab1 -lab6 总结,实验一到实验六总结
    GDAL切割重采样遥感图像
  • 原文地址:https://www.cnblogs.com/hwaggLee/p/4961866.html
Copyright © 2011-2022 走看看