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;
    }
    }
  • 相关阅读:
    听说你技术很牛?对不起,屁用没有
    Java内存区域与内存溢出异常
    java mongodb连接配置实践——生产环境最优
    MngoDb MongoClientOptions 配置信息及常用配置信息
    java mongodb的MongoOptions生产级配置
    【深入 MongoDB 开发】使用正确的姿势连接分片集群
    MongoDB索引管理-索引的创建、查看、删除
    面试题:判断字符串是否回文
    面试题:Add Two Numbers(模拟单链表)
    面试题:获取一个整数的16进制表现形式
  • 原文地址:https://www.cnblogs.com/duyinqiang/p/6909832.html
Copyright © 2011-2022 走看看