zoukankan      html  css  js  c++  java
  • HTTP请求范例

    package com.grefr.basemethod;
    /*JAVA发送HTTP请求,返回HTTP响应内容,实例及应用 博客分类: JAVA实现
    Java.netBeanJDKApache .
    JDK 中提供了一些对无状态协议请求(HTTP )的支持,下面我就将我所写的一个小例子(组件)进行描述:

    首先让我们先构建一个请求类(HttpRequester )。

    该类封装了 JAVA 实现简单请求的代码,如下: */


    //Java代码
    import java.io.BufferedReader; 
    import java.io.IOException; 
    import java.io.InputStream; 
    import java.io.InputStreamReader; 
    import java.net.HttpURLConnection; 
    import java.net.URL; 
    import java.nio.charset.Charset; 
    import java.util.Map; 
    import java.util.Vector; 
      
    /**
    * HTTP请求对象

    * @author YYmmiinngg
    */
    public class HttpRequester { 
        private String defaultContentEncoding; 
      
        public HttpRequester() { 
            this.defaultContentEncoding = Charset. defaultCharset().name(); 
        } 
      
        /**
         * 发送GET请求
         * 
         * @param urlString
         *            URL地址
         * @return 响应对象
         * @throws IOException
         */ 
        public HttpRespons sendGet(String urlString) throws IOException { 
            return this.send(urlString, "GET", null, null); 
        } 
      
        /**
         * 发送GET请求
         * 
         * @param urlString
         *            URL地址
         * @param params
         *            参数集合
         * @return 响应对象
         * @throws IOException
         */ 
        public HttpRespons sendGet(String urlString, Map<String, String> params) 
                throws IOException { 
            return this.send(urlString, "GET", params, null); 
        } 
      
        /**
         * 发送GET请求
         * 
         * @param urlString
         *            URL地址
         * @param params
         *            参数集合
         * @param propertys
         *            请求属性
         * @return 响应对象
         * @throws IOException
         */ 
        public HttpRespons sendGet(String urlString, Map<String, String> params, 
                Map<String, String> propertys) throws IOException { 
            return this.send(urlString, "GET", params, propertys); 
        } 
      
        /**
         * 发送POST请求
         * 
         * @param urlString
         *            URL地址
         * @return 响应对象
         * @throws IOException
         */ 
        public HttpRespons sendPost(String urlString) throws IOException { 
            return this.send(urlString, "POST", null, null); 
        } 
      
        /**
         * 发送POST请求
         * 
         * @param urlString
         *            URL地址
         * @param params
         *            参数集合
         * @return 响应对象
         * @throws IOException
         */ 
        public HttpRespons sendPost(String urlString, Map<String, String> params) 
                throws IOException { 
            return this.send(urlString, "POST", params, null); 
        } 
      
        /**
         * 发送POST请求
         * 
         * @param urlString
         *            URL地址
         * @param params
         *            参数集合
         * @param propertys
         *            请求属性
         * @return 响应对象
         * @throws IOException
         */ 
        public HttpRespons sendPost(String urlString, Map<String, String> params, 
                Map<String, String> propertys) throws IOException { 
            return this.send(urlString, "POST", params, propertys); 
        } 
      
        /**
         * 发送HTTP请求
         * 
         * @param urlString
         * @return 响映对象
         * @throws IOException
         */ 
        private HttpRespons send(String urlString, String method, 
                Map<String, String> parameters, Map<String, String> propertys) 
                throws IOException { 
            HttpURLConnection urlConnection = null; 
      
            if (method.equalsIgnoreCase("GET") && parameters != null) { 
                StringBuffer param = new StringBuffer(); 
                int i = 0; 
                for (String key : parameters.keySet()) { 
                    if (i == 0) 
                        param.append( "?"); 
                    else
                        param.append( "&"); 
                    param.append(key).append("=" ).append(parameters.get(key)); 
                    i++; 
                } 
                urlString += param; 
            } 
            URL url = new URL(urlString); 
            urlConnection = (HttpURLConnection) url.openConnection(); 
      
            urlConnection.setRequestMethod(method); 
            urlConnection.setDoOutput( true); 
            urlConnection.setDoInput( true); 
            urlConnection.setUseCaches( false); 
      
            if (propertys != null) 
                for (String key : propertys.keySet()) { 
                    urlConnection.addRequestProperty(key, propertys.get(key)); 
                } 
      
            if (method.equalsIgnoreCase("POST") && parameters != null) { 
                StringBuffer param = new StringBuffer(); 
                for (String key : parameters.keySet()) { 
                    param.append( "&"); 
                    param.append(key).append("=" ).append(parameters.get(key)); 
                } 
                urlConnection.getOutputStream().write(param.toString().getBytes()); 
                urlConnection.getOutputStream().flush(); 
                urlConnection.getOutputStream().close(); 
            } 
      
            return this.makeContent(urlString, urlConnection); 
        } 
      
        /**
         * 得到响应对象
         * 
         * @param urlConnection
         * @return 响应对象
         * @throws IOException
         */ 
        private HttpRespons makeContent(String urlString, 
                HttpURLConnection urlConnection) throws IOException { 
            HttpRespons httpResponser = new HttpRespons(); 
            try { 
                InputStream in = urlConnection.getInputStream(); 
                BufferedReader bufferedReader = new BufferedReader( 
                        new InputStreamReader(in)); 
                httpResponser. contentCollection = new Vector<String>(); 
                StringBuffer temp = new StringBuffer(); 
                String line = bufferedReader.readLine(); 
                while (line != null) { 
                    httpResponser. contentCollection.add(line); 
                    temp.append(line).append( " "); 
                    line = bufferedReader.readLine(); 
                } 
                bufferedReader.close(); 
      
                String ecod = urlConnection.getContentEncoding(); 
                if (ecod == null) 
                    ecod = this.defaultContentEncoding; 
      
                httpResponser. urlString = urlString; 
      
                httpResponser. defaultPort = urlConnection.getURL().getDefaultPort(); 
                httpResponser. file = urlConnection.getURL().getFile(); 
                httpResponser. host = urlConnection.getURL().getHost(); 
                httpResponser. path = urlConnection.getURL().getPath(); 
                httpResponser. port = urlConnection.getURL().getPort(); 
                httpResponser. protocol = urlConnection.getURL().getProtocol(); 
                httpResponser. query = urlConnection.getURL().getQuery(); 
                httpResponser. ref = urlConnection.getURL().getRef(); 
                httpResponser. userInfo = urlConnection.getURL().getUserInfo(); 
      
                httpResponser. content = new String(temp.toString().getBytes(), ecod); 
                httpResponser. contentEncoding = ecod; 
                httpResponser. code = urlConnection.getResponseCode(); 
                httpResponser. message = urlConnection.getResponseMessage(); 
                httpResponser. contentType = urlConnection.getContentType(); 
                httpResponser. method = urlConnection.getRequestMethod(); 
                httpResponser. connectTimeout = urlConnection.getConnectTimeout(); 
                httpResponser. readTimeout = urlConnection.getReadTimeout(); 
      
                return httpResponser; 
            } catch (IOException e) { 
                throw e; 
            } finally { 
                if (urlConnection != null) 
                    urlConnection.disconnect(); 
            } 
        } 
      
        /**
         * 默认的响应字符集
         */ 
        public String getDefaultContentEncoding() { 
            return this.defaultContentEncoding; 
        } 
      
        /**
         * 设置默认的响应字符集
         */ 
        public void setDefaultContentEncoding(String defaultContentEncoding) { 
            this.defaultContentEncoding = defaultContentEncoding; 
        } 
    }





    /*其次我们来看看响应对象(HttpRespons )。 响应对象其实只是一个数据BEAN ,由此来封装请求响应的结果数据,如下:
    java代码  */
    import java.util.Vector; 
      
    /**
    * 响应对象
    */
    public class HttpRespons { 
      
        String urlString; 
      
       int defaultPort; 
     
       String file; 
     
       String host; 
     
       String path; 
     
       int port; 
     
       String protocol; 
     
       String query; 
     
       String ref; 
     
       String userInfo; 
     
       String contentEncoding; 
     
       String content; 
     
       String contentType; 
     
       int code; 
     
       String message; 
     
       String method; 
     
       int connectTimeout; 
     
       int readTimeout; 
     
       Vector<String> contentCollection; 
     
       public String getContent() { 
           return content; 
       } 
     
       public String getContentType() { 
           return contentType; 
       } 
     
       public int getCode() { 
           return code; 
       } 
     
       public String getMessage() { 
           return message; 
       } 
     
       public Vector<String> getContentCollection() { 
           return contentCollection; 
       } 
     
       public String getContentEncoding() { 
           return contentEncoding; 
       } 
     
       public String getMethod() { 
           return method; 
       } 
     
       public int getConnectTimeout() { 
           return connectTimeout; 
       } 
     
       public int getReadTimeout() { 
           return readTimeout; 
       } 
     
       public String getUrlString() { 
           return urlString; 
       } 
     
       public int getDefaultPort() { 
           return defaultPort; 
       } 
     
       public String getFile() { 
           return file; 
       } 
     
       public String getHost() { 
           return host; 
       } 
     
       public String getPath() { 
           return path; 
        } 
      
        public int getPort() { 
            return port; 
        } 
      
        public String getProtocol() { 
            return protocol; 
        } 
      
        public String getQuery() { 
            return query; 
        } 
      
        public String getRef() { 
            return ref; 
        } 
      
        public String getUserInfo() { 
            return userInfo; 
        } 
      
    }
    import java.util.Vector;

    *//**
    * 响应对象
    *//*
    public class HttpRespons {

          String urlString;

           int defaultPort;

          String file;

          String host;

          String path;

           int port;

          String protocol;

          String query;

          String ref;

          String userInfo;

          String contentEncoding;

          String content;

          String contentType;

           int code;

          String message;

          String method;

           int connectTimeout;

           int readTimeout;

          Vector<String> contentCollection;

           public String getContent() {
                 return content;
          }

           public String getContentType() {
                 return contentType;
          }

           public int getCode() {
                 return code;
          }

           public String getMessage() {
                 return message;
          }

           public Vector<String> getContentCollection() {
                 return contentCollection;
          }

           public String getContentEncoding() {
                 return contentEncoding;
          }

           public String getMethod() {
                 return method;
          }

           public int getConnectTimeout() {
                 return connectTimeout;
          }

           public int getReadTimeout() {
                 return readTimeout;
          }

           public String getUrlString() {
                 return urlString;
          }

           public int getDefaultPort() {
                 return defaultPort;
          }

           public String getFile() {
                 return file;
          }

           public String getHost() {
                 return host;
          }

           public String getPath() {
                 return path;
          }

           public int getPort() {
                 return port;
          }

           public String getProtocol() {
                 return protocol;
          }

           public String getQuery() {
                 return query;
          }

           public String getRef() {
                 return ref;
          }

           public String getUserInfo() {
                 return userInfo;
          }

    }




    最后,让我们写一个应用类,测试以上代码是否正确

    Java代码
    import com.yao.http.HttpRequester; 
    import com.yao.http.HttpRespons; 
      
    public class Test { 
        public static void main(String[] args) { 
            try { 
                HttpRequester request = new HttpRequester(); 
                HttpRespons hr = request.sendGet( "http://www.csdn.net"); 
     
                System. out.println(hr.getUrlString()); 
                System. out.println(hr.getProtocol()); 
                System. out.println(hr.getHost()); 
                System. out.println(hr.getPort()); 
                System. out.println(hr.getContentEncoding()); 
                System. out.println(hr.getMethod()); 
                 
                System. out.println(hr.getContent()); 
      
            } catch (Exception e) { 
                e.printStackTrace(); 
            } 
        } 

  • 相关阅读:
    记支付宝接口对接,涉及到提取证书SN号的解决方案
    Second Level Cache for Entity Framework 6.1
    记一个dynamic的坑
    使用EntityFramwork[6.1]进行级联保存的时候出现异常
    转:Transform Web.Config when Deploying a Web Application Project
    转:程序员如何增加收入
    超实用的JavaScript技巧及最佳实践(下)
    超实用的JavaScript技巧及最佳实践(上)
    Oracle PL/SQL入门语法点
    轻量级IOC框架:Ninject (下)
  • 原文地址:https://www.cnblogs.com/grefr/p/5046346.html
Copyright © 2011-2022 走看看