工具类:
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;
}
}
用例:
/**
* 给用户赋予角色
* Administrator
* Power User 上传文件角色
* Report Author
* Business Analyst
*
* @return
*/
public String assignRoleToUser () {
// 多个角色 加 tab 间隔
// "roleNames", URLEncoder.encode("Report Author", "UTF-8") + "\\t" + URLEncoder.encode("Power User", "UTF-8")
String userName = "tom";
String rlt = HttpUtils.doPutForPentaho(HttpUtils.URL_PREFIX + "/pentaho/api/userroledao/assignRoleToUser?userName=" + userName + "&roleNames="+ URLEncoder.encode("Power User", "UTF-8"), 2000);
return rlt;
}