zoukankan      html  css  js  c++  java
  • Url,HTTPUrlConnection(一)

    package com.cmy.urlcon;
    
    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.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    
    public class HttpRequestor {
    
        private String charset = "utf-8";
        private Integer connectTimeout = null;
        private Integer socketTimeout = null;
        private String proxyHost = null;
        private Integer proxyPort = null;
    
        public String doGet(String urlPath) throws Exception {
    
            URL url = new URL(urlPath);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestProperty("Accept-Charset", charset);
            connection.setRequestProperty("Content-Type",
                    "application/x-www-form-urlencoded");
    
            InputStream inputStream = null;
            InputStreamReader inputStreamReader = null;
            BufferedReader bfReader = null;
            StringBuffer sb = new StringBuffer();
            String readLine = null;
    
            if (connection.getResponseCode() >= 300) {
                throw new Exception("HTTP Request is failue, Response code is "
                        + connection.getResponseCode());
            }
    
            try {
                inputStream = connection.getInputStream();
                inputStreamReader = new InputStreamReader(inputStream);
                bfReader = new BufferedReader(inputStreamReader);
                while ((readLine = bfReader.readLine()) != null) {
                    sb.append(readLine);
                }
    
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                bfReader.close();
                inputStreamReader.close();
                inputStream.close();
            }
    
            return sb.toString();
    
        }
    
        public static String doPost(String urlPath, Map paramMap) throws Exception {
            URL url = new URL(urlPath);
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            StringBuffer paramBuffer = new StringBuffer();
    
            if (paramMap != null) {
                Iterator iterator = paramMap.keySet().iterator();
                String key = null;
                String value = null;
                while (iterator.hasNext()) {
                    key = (String) iterator.next();
    
                    if ((value = (String) paramMap.get(key)) != null) {
                        paramBuffer.append(value);
                    } else {
                        value = "";
                    }
                    paramBuffer.append(key).append("=").append(value);
                    if (iterator.hasNext()) {
                        paramBuffer.append("&");
                    }
                }
            }
            System.out.println("POST parameter: " + paramBuffer.toString());
    
            con.setRequestProperty("Accept-Charset", "utf-8");
            con.setRequestProperty("Content-Type",
                    "application/x-www-form-urlencoded");
            con.setConnectTimeout(3000);
            con.setDoInput(true);
            con.setDoOutput(true);
            con.setUseCaches(false);
            String cookie0 = con.getHeaderField("Set-Cookie");
    
            OutputStream outputStream = null;
            OutputStreamWriter outputStreamWriter = null;
            InputStream inputStream = null;
            InputStreamReader inputStreamReader = null;
            BufferedReader bfReader = null;
            StringBuffer sb = new StringBuffer();
            String readLine = null;
    
            try {
                outputStream = con.getOutputStream();
                outputStreamWriter = new OutputStreamWriter(outputStream);
                outputStreamWriter.write(paramBuffer.toString());
                outputStreamWriter.flush();
    
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            if (con.getResponseCode() >= 300) {
                throw new Exception("HTTP Request is failue, Response code is "
                        + con.getResponseCode());
            }
    
            try {
                inputStream = con.getInputStream();
                inputStreamReader = new InputStreamReader(inputStream);
                bfReader = new BufferedReader(inputStreamReader);
                while ((readLine = bfReader.readLine()) != null) {
                    sb.append(readLine);
                }
    
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                outputStreamWriter.close();
                outputStream.close();
                bfReader.close();
                inputStreamReader.close();
                inputStream.close();
            }
    
            return sb.toString();
        }
    
        private HttpURLConnection openConnection(URL localURL) throws IOException {
            HttpURLConnection connection;
            if (proxyHost != null && proxyPort != null) {
                Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort));
                connection = (HttpURLConnection) localURL.openConnection(proxy);
            } else {
                connection = (HttpURLConnection) localURL.openConnection();
            }
            return connection;
        }
    
        private void renderRequest(HttpURLConnection connection) {
    
            if (connectTimeout != null) {
                connection.setConnectTimeout(connectTimeout);
            }
    
            if (socketTimeout != null) {
                connection.setReadTimeout(socketTimeout);
            }
    
        }
        
    
        public String getCharset() {
            return charset;
        }
    
        public void setCharset(String charset) {
            this.charset = charset;
        }
    
        public Integer getConnectTimeout() {
            return connectTimeout;
        }
    
        public void setConnectTimeout(Integer connectTimeout) {
            this.connectTimeout = connectTimeout;
        }
    
        public Integer getSocketTimeout() {
            return socketTimeout;
        }
    
        public void setSocketTimeout(Integer socketTimeout) {
            this.socketTimeout = socketTimeout;
        }
    
        public String getProxyHost() {
            return proxyHost;
        }
    
        public void setProxyHost(String proxyHost) {
            this.proxyHost = proxyHost;
        }
    
        public Integer getProxyPort() {
            return proxyPort;
        }
    
        public void setProxyPort(Integer proxyPort) {
            this.proxyPort = proxyPort;
        }
        
        /**
         * test case 
         * @param args
         * @throws Exception
         */
        public static void main(String[] args) throws Exception {
            /* Post Request */
            Map dataMap = new HashMap();
            dataMap.put("username", "Nick Huang");
            dataMap.put("blog", "IT");
            System.out.println(new HttpRequestor().doPost("http://localhost:8080/OneHttpServer/", dataMap));
            
            /* Get Request */
            System.out.println(new HttpRequestor().doGet("http://localhost:8080/OneHttpServer/"));
    
        }
    
    }

    http://www.runoob.com/java/java-url-processing.html

  • 相关阅读:
    【MySQL】根据JSON字段的内容检索查询数据
    【PHP】跑大批量数据脚本
    【Thinkphp】 CLI模式下接收参数的几种方式
    元素类型 “item” 相关联的 “name” 属性值不能包含 ‘<’ 字符
    python unicode、utf-8、gbk编码与解码展示
    python使用requests通过代理地址发送multipart/form-data报文数据
    python使用requests通过代理地址发送application/x-www-form-urlencoded报文数据
    python使用requests通过代理地址发送application/json报文数据
    python使用requests通过代理地址发送text/xml报文数据
    python使用requests通过代理地址发送text/plain报文数据
  • 原文地址:https://www.cnblogs.com/tingbogiu/p/6269650.html
Copyright © 2011-2022 走看看