All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.xiongyingqi.common.http.ParameteredHttpUtils Maven / Gradle / Ivy

There is a newer version: 1.1
Show newest version
package com.xiongyingqi.common.http;

import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.Map;
import java.util.WeakHashMap;

/**
 * @author xiongyingqi
 * @since 16-12-17 下午6:55
 */
public abstract class ParameteredHttpUtils extends HttpUtils {
  private static final Logger logger = LoggerFactory.getLogger(ParameteredHttpUtils.class);
  private static Map, HttpParameterHandler> httpParameterHandlerMap = new WeakHashMap,
      HttpParameterHandler>();

  public static String doPost(Object parameterEntity, String url, String charset, int timeout) throws UnsupportedEncodingException {
    if (parameterEntity == null) {
      return null;
    }
    Class clazz = parameterEntity.getClass();
    HttpParameterHandler httpParameterHandler = httpParameterHandlerMap.get(clazz);
    if (httpParameterHandler == null) {
      synchronized (clazz) {
        httpParameterHandler = new HttpParameterHandler(clazz);
        httpParameterHandlerMap.put(clazz, httpParameterHandler);
      }
    }
    if (logger.isDebugEnabled()) {
      logger.debug("Use HttpParameterHandler to parse entity: {}", httpParameterHandler);
    }
    String response = doPost(httpParameterHandler, parameterEntity, url, charset, timeout);
    if (logger.isDebugEnabled()) {
      logger.debug("Got response: {} by url: {}, entity: {}", response, url, parameterEntity);
    }
    return response;
  }

  public static String doPost(Map parameterMap, String url, String charset, int timeout) throws
      UnsupportedEncodingException {
    if (parameterMap == null) {
      return null;
    }
    List pairs = parseMapToPairs(parameterMap);
    HttpEntity entity = new UrlEncodedFormEntity(pairs, charset);
    String response = post(url, entity, charset, timeout);
    if (logger.isDebugEnabled()) {
      logger.debug("Got response: {} by url: {}, entity: {}", response, url, entity);
    }
    return response;
  }

  public static String doPost(HttpParameterHandler handler, Object instance, String url, String charset,
                              int timeout) throws UnsupportedEncodingException {
    Map parameterMap = handler.getParameterMapWithObject(instance);
    if (logger.isDebugEnabled()) {
      logger.debug("Convert entity: {} to parameters: {}", instance, parameterMap);
    }
    List pairs = parseMapToPairs(parameterMap);
    HttpEntity entity = new UrlEncodedFormEntity(pairs, charset);
    return post(url, entity, charset, timeout);
  }

  public static  String doPostWithParameterHandler(HttpParameterHandler handler, T instance, String url, String
      charset, int timeout) throws UnsupportedEncodingException {
    Map parameterMap = handler.getParameterMap(instance);
    List pairs = parseMapToPairs(parameterMap);
    HttpEntity entity = new UrlEncodedFormEntity(pairs, charset);
    return post(url, entity, charset, timeout);
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy