/**
* 功能描述:通过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;
}
带有安全认证的httpClient请求工具
最新推荐文章于 2024-06-20 23:11:24 发布