带有安全认证的httpClient请求工具

/**
     * 功能描述:通过http请求获取服务器相关信息
     *
     * @param commonConditionDTO 调用条件
     * @return java.lang.String
     */
    public static String httpPost(DCCommonConditionDTO commonConditionDTO) {
        // 设置用户名和密码
        String authorization = commonConditionDTO.getUser() + ":" + commonConditionDTO.getPassword();

        //对其进行加密
        byte[] rel = Base64.encodeBase64(authorization.getBytes());
        String auth = new String(rel);

        // 设置超时时间
        BasicHttpParams httpParams = new BasicHttpParams();
        HttpConnectionParams.setConnectionTimeout(httpParams, DataSyncConstants.HTTP_CLIENT_CONNECT_OUT_TIME);
        HttpConnectionParams.setSoTimeout(httpParams, DataSyncConstants.HTTP_CLIENT_OUT_TIME);
        DefaultHttpClient httpClient = new DefaultHttpClient(httpParams);

        String url = commonConditionDTO.getUrlStr();
        String strJson = JSONObject.fromObject(commonConditionDTO).toString();
        log.error("\nURL:" + url + "\nPOST请求入参:\n" + strJson);
//        String strJson = "{\"limit\":1,\"filter\":[{\"field\":\""+syncDataParamDTO.getLstFilterDTO().get(0).getField()+"\",\"value\":604030777071501312,\"operator\": \"EQ\"}]}";
        HttpPost method = new HttpPost(url);
        String strUrl = StringUtils.EMPTY, str = StringUtils.EMPTY;
        try {
            if (StringUtils.isNotEmpty(strJson)) {
                // 解决中文乱码问题
                StringEntity entity = new StringEntity(strJson, "UTF-8");
                entity.setContentEncoding("UTF-8");
                entity.setContentType("application/json");
                method.setEntity(entity);
            }
            method.setHeader("Authorization", "Basic " + auth);
            HttpResponse result = httpClient.execute(method);
            strUrl = URLDecoder.decode(url, "UTF-8");
            log.error("result.getStatusLine().getStatusCode()===" + strUrl + result.getStatusLine().getStatusCode());
            log.error("Authorization:" + method.getHeaders("Authorization"));
            //请求发送成功,并得到响应
            if (result.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                try {
                    // 读取服务器返回过来的json字符串数据
                    str = EntityUtils.toString(result.getEntity(), "UTF-8");
                    if (str.length() > 4000) {
                        StringBuilder tempSb = new StringBuilder(4050);
                        tempSb.append(str.substring(0, 2000))
                                .append("。。。省略中间部分。。。")
                                .append(str.substring(str.length() - 2000, str.length()));
                        log.error("返回成功,由于返回结果长度大于4000,已作自动截取。。\n" + tempSb.toString());
                    } else {
                        log.error("返回成功" + str);
                    }
                } catch (Exception e) {
                    log.error("post请求提交返回成功后解析返回数据出错,URL为 :" + strUrl, e);
                }
            } else {
                log.error("post请求提交返回不成功URL为:" + url + "。\n  返回错误码:" + result.getStatusLine().getStatusCode() + "。 \n 错误内容:"
                        + EntityUtils.toString(result.getEntity()));
            }
        } catch (IOException e) {
            log.error("post请求提交失败:" + strUrl, e);
        }
        return str;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值