美文网首页
Java—发送GET、POST请求工具

Java—发送GET、POST请求工具

作者: Python大数据工程师 | 来源:发表于2020-03-25 16:16 被阅读0次
    (图片来自网络配图)

    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;

    /**

    * Java HTTP请求对象 发送GET/POST请求工具类

    */

    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 地址

    * @param method get/post

    * @param parameters 添加由键值对指定的请求参数

    * @param propertys 添加由键值对指定的一般请求属性

    * @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("\r\n");

    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;

    }

    }

    相关文章

      网友评论

          本文标题:Java—发送GET、POST请求工具

          本文链接:https://www.haomeiwen.com/subject/yokxuhtx.html