分享一下调用第三方接口的: http 和 https 的两种不同调用方式的工具类
注意:
-
如果是 http 的请求,将 CloseableHttpClient httpClient = HttpClients.createDefault(); 放开
-
如果是 https 请求, 将 CloseableHttpClient httpClient = doPostW(); 放开即可
-
参数的构造方式为:
Map<String, String> map = new HashMap<>(); map.put("username",username); map.put("userpwd",userpwd); map.put("loginType",loginType);
-
调用方法为:
-
Map<String, String> map = new HashMap<>();
map.put(“username”,username);
map.put(“userpwd”,userpwd);
map.put(“loginType”,loginType);
String result =HttpClientUtil.doPost("https://127.0.0.1:8081/test/confirmMyUser", map);
```
- 得到字符串类型的 result 后就可以进行处理做其他的逻辑操作了
/**
* 带参数的post请求(目前是带有SSL证书的请求方式)
* @param url
* @param param
* @return String
*/
public static String doPost(String url, Map<String, String> param) {
// 创建Httpclient对象
// CloseableHttpClient httpClient = HttpClients.createDefault(); // http 请求
CloseableHttpClient httpClient = doPostW(); // https 请求
CloseableHttpResponse response = null;
String resultString = null;
try {
// 创建Http Post请求
HttpPost httpPost = new HttpPost(url);
// 创建参数列表
if (param != null) {
List<NameValuePair> paramList = new ArrayList<NameValuePair>();
for (String key : param.keySet()) {
paramList.add(new BasicNameValuePair(key, param.get(key)));
}
// 模拟表单
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList);
httpPost.setEntity(entity);
}
// 执行http请求
response = httpClient.execute(httpPost);
if (response != null){
resultString = EntityUtils.toString(response.getEntity(), "utf-8");
}
} catch (Exception e) {
e.printStackTrace();
return null; // TODO 这里做了修改
} finally {
try {
if (response != null){
response.close();
}
} catch (IOException e) {
e.printStackTrace();
return null; // TODO 这里做了修改
}
}
return resultString;
}
/**
* 开启SSL证书后新加方法: 2021-04-09
* @return
*/
public static CloseableHttpClient doPostW(){
CloseableHttpClient httpClient = null;
try {
SSLConnectionSocketFactory scsf = new SSLConnectionSocketFactory(
SSLContexts.custom().loadTrustMaterial(null,new TrustSelfSignedStrategy()).build(),
NoopHostnameVerifier.INSTANCE );
httpClient = HttpClients.custom().setSSLSocketFactory(scsf).build();
}catch (Exception e){
e.printStackTrace();
}
return httpClient;
}