java 模拟c#HttpRequest skyCc

package test;

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;

public class HttpRequester {
    private String defaultContentEncoding;
   
     public HttpRequester() {
         this.defaultContentEncoding = Charset.defaultCharset().name();
     }
 
     /**
      *发送GET请求
      *
      *@paramurlString
      *            URL地址
      *@return响应对象
      *@throwsIOException
      */
     public HttpRespons sendGet(String urlString) throws IOException {
         return this.send(urlString, "GET", null, null);
     }
 
     /**
      *发送GET请求
      *
      *@paramurlString
      *            URL地址
      *@paramparams
      *            参数集合
      *@return响应对象
      *@throwsIOException
      */
     public HttpRespons sendGet(String urlString, Map<String, String> params)
             throws IOException {
         return this.send(urlString, "GET", params, null);
     }
 
     /**
      *发送GET请求
      *
      *@paramurlString
      *            URL地址
      *@paramparams
      *            参数集合
      *@parampropertys
      *            请求属性
      *@return响应对象
      *@throwsIOException
      */
     public HttpRespons sendGet(String urlString, Map<String, String> params,
             Map<String, String> propertys) throws IOException {
         return this.send(urlString, "GET", params, propertys);
     }
 
     /**
      *发送POST请求
      *
      *@paramurlString
      *            URL地址
      *@return响应对象
      *@throwsIOException
      */
     public HttpRespons sendPost(String urlString) throws IOException {
         return this.send(urlString, "POST", null, null);
     }
 
     /**
      *发送POST请求
      *
      *@paramurlString
      *            URL地址
      *@paramparams
      *            参数集合
      *@return响应对象
      *@throwsIOException
      */
     public HttpRespons sendPost(String urlString, Map<String, String> params)
             throws IOException {
         return this.send(urlString, "POST", params, null);
     }
 
    
     /**
      *发送POST请求
      *
      *@paramurlString
      *            URL地址
      *@paramparams
      *            参数集合
      *@parampropertys
      *            请求属性
      *@return响应对象
      *@throwsIOException
      */
     public HttpRespons sendPost(String urlString, Map<String, String> params,
             Map<String, String> propertys) throws IOException {
         return this.send(urlString, "POST", params, propertys);
     }
 
     public HttpRespons sendPost(String urlString, String params,
             Map<String, String> propertys) throws IOException {
         return this.sendString(urlString, "POST", params, propertys);
     }
 
     /**
      *发送HTTP请求
      *
      *@paramurlString
      *@return响映对象
      *@throwsIOException
      */
    
     private HttpRespons sendString(String urlString, String method,
          String parameters, Map<String, String> propertys)
             throws IOException {
      
      HttpURLConnection urlConnection = null;
     
         if (method.equalsIgnoreCase("GET") && parameters != null) {
            
             urlString += parameters;
         }
         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();
             byte[] contentBytes = parameters.getBytes(this.defaultContentEncoding);
             //urlConnection.getOutputStream().write(param.toString().getBytes());
             urlConnection.setFixedLengthStreamingMode(contentBytes.length);
             urlConnection.getOutputStream().write(contentBytes);
             urlConnection.getOutputStream().flush();
             urlConnection.getOutputStream().close();
         }
 
         return this.makeContent(urlString, urlConnection);
      
      
      
      
     }
     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);
     }
 
     /**
      *得到响应对象
      *
      *@paramurlConnection
      *@return响应对象
      *@throwsIOException
      */
     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);
                 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;
     }
 }

///httpResponse

package test;

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 Vector<String> getContentCollection() {
  return contentCollection;
 }

 public void setContentCollection(Vector<String> contentCollection) {
  this.contentCollection = contentCollection;
 }

 public String getUrlString() {
  return urlString;
 }

 public void setUrlString(String urlString) {
  this.urlString = urlString;
 }

 public int getDefaultPort() {
  return defaultPort;
 }

 public void setDefaultPort(int defaultPort) {
  this.defaultPort = defaultPort;
 }

 public String getFile() {
  return file;
 }

 public void setFile(String file) {
  this.file = file;
 }

 public String getHost() {
  return host;
 }

 public void setHost(String host) {
  this.host = host;
 }

 public String getPath() {
  return path;
 }

 public void setPath(String path) {
  this.path = path;
 }

 public int getPort() {
  return port;
 }

 public void setPort(int port) {
  this.port = port;
 }

 public String getProtocol() {
  return protocol;
 }

 public void setProtocol(String protocol) {
  this.protocol = protocol;
 }

 public String getQuery() {
  return query;
 }

 public void setQuery(String query) {
  this.query = query;
 }

 public String getRef() {
  return ref;
 }

 public void setRef(String ref) {
  this.ref = ref;
 }

 public String getUserInfo() {
  return userInfo;
 }

 public void setUserInfo(String userInfo) {
  this.userInfo = userInfo;
 }

 public String getContentEncoding() {
  return contentEncoding;
 }

 public void setContentEncoding(String contentEncoding) {
  this.contentEncoding = contentEncoding;
 }

 public String getContent() {
  return content;
 }

 public void setContent(String content) {
  this.content = content;
 }

 public String getContentType() {
  return contentType;
 }

 public void setContentType(String contentType) {
  this.contentType = contentType;
 }

 public int getCode() {
  return code;
 }

 public void setCode(int code) {
  this.code = code;
 }

 public String getMessage() {
  return message;
 }

 public void setMessage(String message) {
  this.message = message;
 }

 public String getMethod() {
  return method;
 }

 public void setMethod(String method) {
  this.method = method;
 }

 public int getConnectTimeout() {
  return connectTimeout;
 }

 public void setConnectTimeout(int connectTimeout) {
  this.connectTimeout = connectTimeout;
 }

 public int getReadTimeout() {
  return readTimeout;
 }

 public void setReadTimeout(int readTimeout) {
  this.readTimeout = readTimeout;
 }

}

testmain

HttpRequester request = new HttpRequester();
  HttpRespons hr = request.sendPost(urlString, sb.toString(), map1);
  System.out.println(hr.getContent());

原文地址:https://www.cnblogs.com/cmzcheng/p/2613070.html