纯java版本的http get和post请求

完整代码下载 http://www.zuidaima.com/share/1550463413750784.htm

 

不用任何java lib包实现的发送get和post请求的java实现

 

[java] 
  1. package com.zuidaima.http;
  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.io.InputStreamReader;
  6. import java.net.HttpURLConnection;
  7. import java.net.URL;
  8. import java.nio.charset.Charset;
  9. import java.util.Map;
  10. import java.util.Vector;
  11. /**
  12.  * HTTP请求对象
  13.  *
  14.  * @author YYmmiinngg
  15.  */
  16. public class HttpRequester {
  17.     private String defaultContentEncoding;
  18.     public HttpRequester() {
  19.         this.defaultContentEncoding = Charset.defaultCharset().name();
  20.     }
  21.     /**
  22.      * 发送GET请求
  23.      *
  24.      * @param urlString
  25.      *            URL地址
  26.      * @return 响应对象
  27.      * @throws IOException
  28.      */
  29.     public HttpResponser sendGet(String urlString) throws IOException {
  30.         return this.send(urlString, “GET”, null, null);
  31.     }
  32.     /**
  33.      * 发送GET请求
  34.      *
  35.      * @param urlString
  36.      *            URL地址
  37.      * @param params
  38.      *            参数集合
  39.      * @return 响应对象
  40.      * @throws IOException
  41.      */
  42.     public HttpResponser sendGet(String urlString, Map<String, String> params)
  43.             throws IOException {
  44.         return this.send(urlString, “GET”, params, null);
  45.     }
  46.     /**
  47.      * 发送GET请求
  48.      *
  49.      * @param urlString
  50.      *            URL地址
  51.      * @param params
  52.      *            参数集合
  53.      * @param propertys
  54.      *            请求属性
  55.      * @return 响应对象
  56.      * @throws IOException
  57.      */
  58.     public HttpResponser sendGet(String urlString, Map<String, String> params,
  59.             Map<String, String> propertys) throws IOException {
  60.         return this.send(urlString, “GET”, params, propertys);
  61.     }
  62.     /**
  63.      * 发送POST请求
  64.      *
  65.      * @param urlString
  66.      *            URL地址
  67.      * @return 响应对象
  68.      * @throws IOException
  69.      */
  70.     public HttpResponser sendPost(String urlString) throws IOException {
  71.         return this.send(urlString, “POST”, null, null);
  72.     }
  73.     /**
  74.      * 发送POST请求
  75.      *
  76.      * @param urlString
  77.      *            URL地址
  78.      * @param params
  79.      *            参数集合
  80.      * @return 响应对象
  81.      * @throws IOException
  82.      */
  83.     public HttpResponser sendPost(String urlString, Map<String, String> params)
  84.             throws IOException {
  85.         return this.send(urlString, “POST”, params, null);
  86.     }
  87.     /**
  88.      * 发送POST请求
  89.      *
  90.      * @param urlString
  91.      *            URL地址
  92.      * @param params
  93.      *            参数集合
  94.      * @param propertys
  95.      *            请求属性
  96.      * @return 响应对象
  97.      * @throws IOException
  98.      */
  99.     public HttpResponser sendPost(String urlString, Map<String, String> params,
  100.             Map<String, String> propertys) throws IOException {
  101.         return this.send(urlString, “POST”, params, propertys);
  102.     }
  103.     /**
  104.      * 发送HTTP请求
  105.      *
  106.      * @param urlString
  107.      * @return 响映对象
  108.      * @throws IOException
  109.      */
  110.     private HttpResponser send(String urlString, String method,
  111.             Map<String, String> parameters, Map<String, String> propertys)
  112.             throws IOException {
  113.         HttpURLConnection urlConnection = null;
  114.         if (method.equalsIgnoreCase(“GET”) && parameters != null) {
  115.             StringBuffer param = new StringBuffer();
  116.             int i = 0;
  117.             for (String key : parameters.keySet()) {
  118.                 if (i == 0)
  119.                     param.append(“?”);
  120.                 else
  121.                     param.append(“&”);
  122.                 param.append(key).append(“=”).append(parameters.get(key));
  123.                 i++;
  124.             }
  125.             urlString += param;
  126.         }
  127.         URL url = new URL(urlString);
  128.         urlConnection = (HttpURLConnection) url.openConnection();
  129.         urlConnection.setRequestMethod(method);
  130.         urlConnection.setDoOutput(true);
  131.         urlConnection.setDoInput(true);
  132.         urlConnection.setUseCaches(false);
  133.         if (propertys != null)
  134.             for (String key : propertys.keySet()) {
  135.                 urlConnection.addRequestProperty(key, propertys.get(key));
  136.             }
  137.         if (method.equalsIgnoreCase(“POST”) && parameters != null) {
  138.             StringBuffer param = new StringBuffer();
  139.             for (String key : parameters.keySet()) {
  140.                 param.append(“&”);
  141.                 param.append(key).append(“=”).append(parameters.get(key));
  142.             }
  143.             urlConnection.getOutputStream().write(param.toString().getBytes());
  144.             urlConnection.getOutputStream().flush();
  145.             urlConnection.getOutputStream().close();
  146.         }
  147.         return this.makeContent(urlString, urlConnection);
  148.     }
  149.     /**
  150.      * 得到响应对象
  151.      *
  152.      * @param urlConnection
  153.      * @return 响应对象
  154.      * @throws IOException
  155.      */
  156.     private HttpResponser makeContent(String urlString,
  157.             HttpURLConnection urlConnection) throws IOException {
  158.         HttpResponser httpResponser = new HttpResponser();
  159.         try {
  160.             InputStream in = urlConnection.getInputStream();
  161.             BufferedReader bufferedReader = new BufferedReader(
  162.                     new InputStreamReader(in));
  163.             httpResponser.contentCollection = new Vector<String>();
  164.             StringBuffer temp = new StringBuffer();
  165.             String line = bufferedReader.readLine();
  166.             while (line != null) {
  167.                 httpResponser.contentCollection.add(line);
  168.                 temp.append(line).append(“\r\n”);
  169.                 line = bufferedReader.readLine();
  170.             }
  171.             bufferedReader.close();
  172.             String ecod = urlConnection.getContentEncoding();
  173.             if (ecod == null)
  174.                 ecod = this.defaultContentEncoding;
  175.             httpResponser.urlString = urlString;
  176.             httpResponser.defaultPort = urlConnection.getURL().getDefaultPort();
  177.             httpResponser.file = urlConnection.getURL().getFile();
  178.             httpResponser.host = urlConnection.getURL().getHost();
  179.             httpResponser.path = urlConnection.getURL().getPath();
  180.             httpResponser.port = urlConnection.getURL().getPort();
  181.             httpResponser.protocol = urlConnection.getURL().getProtocol();
  182.             httpResponser.query = urlConnection.getURL().getQuery();
  183.             httpResponser.ref = urlConnection.getURL().getRef();
  184.             httpResponser.userInfo = urlConnection.getURL().getUserInfo();
  185.             httpResponser.content = new String(temp.toString().getBytes(), ecod);
  186.             httpResponser.contentEncoding = ecod;
  187.             httpResponser.code = urlConnection.getResponseCode();
  188.             httpResponser.message = urlConnection.getResponseMessage();
  189.             httpResponser.contentType = urlConnection.getContentType();
  190.             httpResponser.method = urlConnection.getRequestMethod();
  191.             httpResponser.connectTimeout = urlConnection.getConnectTimeout();
  192.             httpResponser.readTimeout = urlConnection.getReadTimeout();
  193.             return httpResponser;
  194.         } catch (IOException e) {
  195.             throw e;
  196.         } finally {
  197.             if (urlConnection != null)
  198.                 urlConnection.disconnect();
  199.         }
  200.     }
  201.     /**
  202.      * 默认的响应字符集
  203.      */
  204.     public String getDefaultContentEncoding() {
  205.         return this.defaultContentEncoding;
  206.     }
  207.     /**
  208.      * 设置默认的响应字符集
  209.      */
  210.     public void setDefaultContentEncoding(String defaultContentEncoding) {
  211.         this.defaultContentEncoding = defaultContentEncoding;
  212.     }
  213. }

 

 

[java] 
  1. package com.zuidaima.http;
  2. import java.util.Vector;
  3. /**
  4.  * 响应对象
  5.  */
  6. public class HttpResponser {
  7.     String urlString;
  8.     int defaultPort;
  9.     String file;
  10.     String host;
  11.     String path;
  12.     int port;
  13.     String protocol;
  14.     String query;
  15.     String ref;
  16.     String userInfo;
  17.     String contentEncoding;
  18.     String content;
  19.     String contentType;
  20.     int code;
  21.     String message;
  22.     String method;
  23.     int connectTimeout;
  24.     int readTimeout;
  25.     Vector<String> contentCollection;
  26.     public String getContent() {
  27.         return content;
  28.     }
  29.     public String getContentType() {
  30.         return contentType;
  31.     }
  32.     public int getCode() {
  33.         return code;
  34.     }
  35.     public String getMessage() {
  36.         return message;
  37.     }
  38.     public Vector<String> getContentCollection() {
  39.         return contentCollection;
  40.     }
  41.     public String getContentEncoding() {
  42.         return contentEncoding;
  43.     }
  44.     public String getMethod() {
  45.         return method;
  46.     }
  47.     public int getConnectTimeout() {
  48.         return connectTimeout;
  49.     }
  50.     public int getReadTimeout() {
  51.         return readTimeout;
  52.     }
  53.     public String getUrlString() {
  54.         return urlString;
  55.     }
  56.     public int getDefaultPort() {
  57.         return defaultPort;
  58.     }
  59.     public String getFile() {
  60.         return file;
  61.     }
  62.     public String getHost() {
  63.         return host;
  64.     }
  65.     public String getPath() {
  66.         return path;
  67.     }
  68.     public int getPort() {
  69.         return port;
  70.     }
  71.     public String getProtocol() {
  72.         return protocol;
  73.     }
  74.     public String getQuery() {
  75.         return query;
  76.     }
  77.     public String getRef() {
  78.         return ref;
  79.     }
  80.     public String getUserInfo() {
  81.         return userInfo;
  82.     }
  83. }

标签