具体绕证书方法
/**
* 绕过证书
* @return
*/
public static CloseableHttpClient createSSLClientDefault(){
try {
SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
//信任所有
public boolean isTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
return true;
}
}).build();
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext);
return HttpClients.custom().setSSLSocketFactory(sslsf).build();
} catch (KeyManagementException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyStoreException e) {
e.printStackTrace();
}
return HttpClients.createDefault();
}
例子
main方法:
String resJson = YsHttpUtil.doPost("https://api.weibo.com/2/statuses/upload_pic.json",tempResMap,"pic",fileSource);
/**
* 上传文件
* @param httpUrl 文件上传地址
* @param params 参数
* @param filepath 文件路径
* @return
*/
public static String doPost(String httpUrl,Map<String,Object> params, String filetype,String filepath){
HttpPost httpPost = new HttpPost(httpUrl);
httpPost.setEntity(createMultipartEntity(params,filepath,filetype));
return sendRequest(httpPost);
}
//创建请求实体
private static MultipartEntity createMultipartEntity(Map<String,Object> params,String filePath,String filetype){
MultipartEntity mutiEntity = new MultipartEntity();
Set<String> keys = params.keySet();
Iterator<String> iterator = keys.iterator();
while(iterator.hasNext()){
String key = iterator.next();
Object value = params.get(key);
try {
mutiEntity.addPart(key, new StringBody(value.toString(), Charset.forName(DEFAULT_CHARSET)));
} catch (UnsupportedEncodingException e) {
throw new YsUtilException(e.getMessage());
}
}
File file = new File(filePath);
mutiEntity.addPart(filetype, new FileBody(file));
return mutiEntity;
}
//发送请求
private static String sendRequest(HttpUriRequest httpUriRequest){
//绕证书的请求
CloseableHttpClient httpclient = createSSLClientDefault();
CloseableHttpResponse response = null;
try {
response = httpclient.execute(httpUriRequest);
if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
HttpEntity entity = response.getEntity();
if(null != entity){
return EntityUtils.toString(entity,DEFAULT_CHARSET);
}
}
throw new YsUtilException();
} catch (ClientProtocolException e) {
throw new YsUtilException(e.getMessage());
} catch (IOException e) {
throw new YsUtilException(e.getMessage());
}finally{
if(null != response){
try {
response.close();
} catch (IOException e) {
throw new YsUtilException(e.getMessage());
}
}
}
}