zoukankan      html  css  js  c++  java
  • HttpInvokerUtils

    package com.sprucetec.tms.utils;

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;

    import java.io.BufferedOutputStream;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;

    /**
    * HttpInvoker.
    *
    * @author Yinqiang Du
    * @date 2016/8/11
    */
    public class HttpInvokerUtils {
    /**
    * 日志.
    */
    private static final Logger LOGGER = LoggerFactory.getLogger(HttpInvokerUtils.class);

    /**
    * 发起http get 请求获取返回结果.
    *
    * @param getURL 请求路径 .
    * @return
    * @throws Exception
    */
    public static String sendGetRequest(String getURL) throws IOException {
    // 拼凑get请求的URL字串,使用URLEncoder.encode对特殊和不可见字符进行编码
    URL getUrl = new URL(getURL);
    // 根据拼凑的URL,打开连接,URL.openConnection函数会根据 URL的类型,
    // 返回不同的URLConnection子类的对象,这里URL是一个http,因此实际返回的是HttpURLConnection
    HttpURLConnection connection = (HttpURLConnection) getUrl
    .openConnection();
    // 进行连接,但是实际上get request要在下一句的 connection.getInputStream()函数中才会真正发到
    // 服务器
    connection.connect();
    // 取得输入流,并使用Reader读取
    BufferedReader reader = new BufferedReader(new InputStreamReader(
    connection.getInputStream()));
    LOGGER.info(" ============================= ");
    LOGGER.info(" Contents of get request ");
    LOGGER.info(" ============================= ");
    String lines="";
    String temp="";
    while ((temp = reader.readLine()) != null) {
    lines += temp;
    }
    reader.close();
    // 断开连接
    connection.disconnect();
    LOGGER.info(" ============================= ");
    LOGGER.info(" Contents of get request ends ");
    LOGGER.info(" ============================= ");
    return lines;
    }

    /**
    * 发起http post 请求获取返回结果.
    *
    * @param urlStr 请求路径 .
    * @param requestParamsJson json字符串.
    * @return
    * @throws Exception
    */
    public static String sendPostRequest(String urlStr, String requestParamsJson) throws Exception {
    LOGGER.info(" ============================= ");
    LOGGER.info("开始发送http post请求...");
    LOGGER.info(" ============================= ");
    BufferedOutputStream bufOutPut = null;
    BufferedReader bufferedReader = null;
    HttpURLConnection httpConn = null;
    String lines = "";
    try {
    URL url = new URL(urlStr);
    httpConn = (HttpURLConnection) url.openConnection();
    httpConn.setDoInput(true); // 设置是否从httpUrlConnection读入,默认情况下是true;
    httpConn.setDoOutput(true); // 设置是否向httpUrlConnection输出,因为这个是post请求,参数要放在http正文内,因此需要设为true, 默认情况下是false;
    httpConn.setRequestMethod("POST");// 设定请求的方法为"POST",默认是GET
    httpConn.setAllowUserInteraction(false); //是否允许用户交互
    httpConn.setUseCaches(false); // Post 请求不能使用缓存
    httpConn.setInstanceFollowRedirects(true);
    httpConn.setRequestProperty("Accept-Charset", "UTF-8");
    httpConn.setRequestProperty("Connection", "Keep-Alive");// 维持长连接
    httpConn.setRequestProperty("Content-Type", "application/json"); // 设定传送的内容类型是可序列化的java对象
    // 此处getOutputStream会隐含的进行connect(即:如同调用上面的connect()方法,
    bufOutPut = new BufferedOutputStream(httpConn.getOutputStream());
    httpConn.connect();
    byte[] bdat = requestParamsJson.getBytes("UTF-8");// 解决中文乱码问题
    bufOutPut.write(bdat, 0, bdat.length);
    bufOutPut.flush();

    // 根据ResponseCode判断连接是否成功
    int responseCode = httpConn.getResponseCode();
    if (responseCode != 200) {
    LOGGER.error(" Error===" + responseCode);
    } else {
    LOGGER.info("Post Success!");
    }
    // 定义BufferedReader输入流来读取URL的ResponseData
    bufferedReader = new BufferedReader(new InputStreamReader(httpConn.getInputStream()));
    String temp = "";
    while ((temp = bufferedReader.readLine()) != null) {
    lines += temp;
    }
    } catch (Exception e) {
    LOGGER.error("send post request error!" + e);
    } finally {
    httpConn.disconnect(); // 断开连接
    try {
    if (bufOutPut != null) {
    bufOutPut.close();
    }
    if (bufferedReader != null) {
    bufferedReader.close();
    }
    } catch (IOException ex) {
    ex.printStackTrace();
    }
    }
    LOGGER.info(" ============================= ");
    LOGGER.info("发送http post请求结束...");
    LOGGER.info(" ============================= ");
    return lines;
    }
    }
  • 相关阅读:
    第一周软件测试
    第八周
    第七
    安卓第六周作业
    安卓第五周
    第四周作业
    Jsp第十次作业
    Jsp第九次作业(带验证码的email)
    Jsp第八次作业
    Jsp第七次作业email
  • 原文地址:https://www.cnblogs.com/duyinqiang/p/6909832.html
Copyright © 2011-2022 走看看