zoukankan      html  css  js  c++  java
  • 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());

  • 相关阅读:
    rocketmq学习(一) rocketmq介绍与安装
    基于redis的分布式锁实现
    SSTI(服务器模板注入)学习
    PHP文件包含漏洞(利用phpinfo)复现
    ubuntu搭建vulhub漏洞环境
    sqli-labs通关教程----51~65关
    sqli-labs通关教程----41~50关
    sqli-labs通关教程----31~40关
    sqli-labs通关教程----21~30关
    sqli-labs通关教程----11~20关
  • 原文地址:https://www.cnblogs.com/cmzcheng/p/2613070.html
Copyright © 2011-2022 走看看