1 实现代码
private String getPasswordToken(){
String token = "";
String url = "https://login.partner.microsoftonline.cn/common/oauth2/token";
Map<String, String> header = new HashMap<>(16);
header.put("Content-Type", "application/x-www-form-urlencoded");
header.put("Accept", "*/*");
Map<String, String> body = new HashMap<>(16);
body.put("resource", "https://analysis.chinacloudapi.cn/powerbi/api");
body.put("client_id", CLIENT_ID);
body.put("client_secret", CLIENT_SECRET);
body.put("grant_type", "password");
body.put("username", USERNAME);
body.put("password", PASSWORD);
StringBuilder bodyStr = new StringBuilder();
int i = 0;
for (Map.Entry<String, String> entry : body.entrySet()) {
i++;
bodyStr.append(entry.getKey()).append("=").append(entry.getValue());
if (i < body.size()) {
bodyStr.append("&");
}
}
String baseStr = httpUtil.doPost(url, header, bodyStr.toString());
JSONObject jsonObject = JSONObject.parseObject(baseStr);
token = jsonObject.getString("access_token");
return token;
}
2 其他方法
public String doPost(String url, Map<String, String> header, String body) {
String result = "";
BufferedReader in = null;
PrintWriter out = null;
try {
URL realUrl = new URL(url);
HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();
connection.setRequestMethod("POST");
for (Map.Entry<String, String> entry : header.entrySet()) {
connection.setRequestProperty(entry.getKey(), entry.getValue());
}
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setConnectTimeout(TWOTHOUSAND);
connection.setReadTimeout(TWOTHOUSAND);
try {
out = new PrintWriter(connection.getOutputStream());
out.print(body);
out.flush();
} catch (Exception e) {
e.printStackTrace();
}
try {
in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}