写这个无非是因为近期用到post请求接口的时候,请求接口调用不通,老师报错:请求超时
最后才发现是因为 :请求的时间设定太短暂,而且网络因素也是其一,返回的数值太多,也会影响
这里贴一下源码:
//url为 请求路径(请求的全路径例如:"http://101.201.74.202:8018/cas-web/login?service=http%3A%2F%2F127.0.0.1%3A8080%2F")
//params 为json格式
import com.alibaba.fastjson.JSONObject; import com.goods.mapper.HttpWmsLogDao; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; 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; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import java.io.IOException; import java.util.ArrayList; import java.util.Map; import java.util.Set;
public String getPostHttp(String url, JSONObject params) {
//声明一个 StringBuilder StringBuilder loggerBuilder = new StringBuilder(); //创建httpClient实例 CloseableHttpClient httpClient = HttpClients.createDefault();
//设置请求相应时间 RequestConfig requestConfig = RequestConfig.custom() .setConnectionRequestTimeout(6000).setConnectTimeout(6000) .setSocketTimeout(6000).build(); HttpPost httpPost; httpPost = new HttpPost(url); httpPost.setConfig(requestConfig); try { ArrayList<NameValuePair> nameValuePairs = new ArrayList<>();
//解析json参数 if (params != null) { for (Map.Entry<String, Object> stringObjectEntry : params.entrySet()) { String key = stringObjectEntry.getKey(); Object value = stringObjectEntry.getValue(); nameValuePairs.add(new BasicNameValuePair(key, value instanceof String ? (String) value : String.valueOf(value))); loggerBuilder.append(stringObjectEntry.getKey()).append(":").append(stringObjectEntry.getValue()).append(","); } httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs,"utf-8")); } /*logger.info("接口调用请求URL:" + url + " " + "接口调用参数:" + loggerBuilder.toString());*/ //logger.info("接口调用请求URL:" + url + " " + "接口调用参数:" + params.toString()); HttpResponse response = httpClient.execute(httpPost); HttpEntity entity = response.getEntity(); String html = EntityUtils.toString(entity, "UTF-8"); return html; } catch (IOException e) { logger.error("接口调用异常", e); } finally { if (httpClient != null) { try { httpClient.close(); } catch (IOException e) { logger.error("接口调用异常", e); e.printStackTrace(); } } } return null; }
暂时记录此处