工具类:
public class HttpUtils {
public static String doPutForPentaho (String url, int timeout){
CloseableHttpClient httpClient = HttpClients.createDefault();
try{
//超时设置
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(timeout) //连接超时
.setConnectionRequestTimeout(timeout)//请求超时
.setSocketTimeout(timeout)
.setRedirectsEnabled(true) //允许自动重定向
.build();
HttpPut httpPut = new HttpPut(url);
httpPut.setConfig(requestConfig);
Map<String, String> headers = new HashMap<> ();
headers.put("Authorization", "Basic " + Base64.encodeBase64String("admin:password".getBytes()));
for (Map.Entry<String, String> e : headers.entrySet()) {
httpPut.addHeader(e.getKey(), e.getValue());
}
CloseableHttpResponse httpResponse = httpClient.execute(httpPut);
if(httpResponse.getStatusLine().getStatusCode() == 200){
return "SUCCESS";
}
}catch (Exception e){
e.printStackTrace();
}finally {
try{
httpClient.close();
}catch (Exception e){
e.printStackTrace();
}
}
return null;
}
}
用例:
public String delUser () {
// 用户名用tab作为间隔,再用URLEncoder进行转码,注意末尾也要加间隔符
// String names = String.join(" ", userNames);
// names = URLEncoder.encode(names + " ", "UTF-8");
String names = "tom%09jack%09";
String rlt = HttpUtils.doPutForPentaho(HttpUtils.URL_PREFIX + "/pentaho/api/userroledao/deleteUsers?userNames=" + names , 2000);
return rlt;
}