HttpClient 4.5.2例子

1:工具类

package com.app.util;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.apache.http.HttpEntity;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.EntityBuilder;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

public class HttpClientUtil {
    //链接超时时间
    private static int connectTimeout = 5000;
    //读取超时时间 如果访问一个接口,多少时间内无法返回数据,就直接放弃此次调用
    private static int socketTimeout = 3000;
    //设置从connect Manager获取Connection 超时时间
    private static int connectionRequestTimeout = 2000;

    /**
     * http POST发送方式
     * @param url
     * @param params
     * @return
     */
    public static String httpPost(String url,Map<String, Object> params){
        String result = null;
        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpPost httpPost = new HttpPost(url);
        RequestConfig requestConfig = setRequestConfig();
        httpPost.setConfig(requestConfig);
        List<NameValuePair> list = getNameValuePair(params);

        //将参数拼装到http链接中
        EntityBuilder entityBuilder = EntityBuilder.create();
        entityBuilder.setParameters(list);
        httpPost.setEntity(entityBuilder.build());

        CloseableHttpResponse response =  null;
        HttpEntity entity = null;
        try {
            response = httpClient.execute(httpPost);
            entity = response.getEntity();
            if (response.getStatusLine().getStatusCode() == 
            HttpStatus.SC_OK) {
                result = EntityUtils.toString(entity, "UTF-8");//将httpEntity转为字符窜
            }
            EntityUtils.consume(entity);// 清除返回的httpEntity
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (response != null) {
                    response.close();
                }
                if (httpClient != null) {
                    httpClient.close();
                }
            } catch (IOException e) {
            }

        }
        return result;
    }

    /**
     * 设置链接时间参数
     * @return
     */
    public static RequestConfig setRequestConfig(){
        RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(connectTimeout).
                setSocketTimeout(socketTimeout).setConnectionRequestTimeout(connectionRequestTimeout).build();
        return requestConfig;
    }

    /**
     * 拼装HTTPClient所需参数
     * @param params
     * @return
     */
    public static List<NameValuePair> getNameValuePair(Map<String, Object> params){
        List<NameValuePair> list = new ArrayList<NameValuePair>(params.size());
        for(Map.Entry<String, Object> entry : params.entrySet()){
            NameValuePair nameValuePair = new BasicNameValuePair(entry.getKey(), String.valueOf(entry.getValue()));
            list.add(nameValuePair);
        }
        return list;
    }
}

2:测试类

package com.app.util;

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

import com.base.util.JackSonSerializeUtil;

public class Test {
    public static void main(String[] args) {
        String url="http://localhost:8080/app/app/system/login";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("loginName", "admin");
        params.put("password", "111111");
        String result = HttpClientUtil.httpPost(url, params);
        Map<String, String> map = (Map<String, String>) JackSonSerializeUtil.JsonToObject(result, Map.class);
        for (Entry<String, String> m: map.entrySet()) {
        }
        System.out.println(result+"  result");
    }

}

3:调用的方法

@HandleMethodLog("用户登录")
    @RequestMapping(value="/login",method=RequestMethod.POST)
    @ResponseBody
    public String login(HttpServletRequest request,HttpServletResponse response) throws Exception{
        logger.debug("登录:login");
        CommonAjax<SysUser> ajax = new CommonAjax<SysUser>();
        SysUser user = sysUserService.getSysUser(new RequestToMap().getRequestToMap(request));
        if(user!=null){
            request.getSession().setAttribute(CommonConstant.SESSION_USER, user);
            user.setLastLoginTime(CommonUtil.getNowDate());
            sysUserService.updateUserByEntity(user);
            ajax.setState(CommonUtil.SUCCESS);
            ajax.setObject(user);
            ajax.setContent("登录成功");
        }else{
            ajax.setState(CommonUtil.NOTPASSERROR);
            ajax.setContent("登录失败");
        }
        return JackSonSerializeUtil.ObjectToJson(ajax);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值