java后端发送post请求获取token,再使用该token调用其他get请求,用代码如何实现
时间: 2023-05-20 16:05:47 浏览: 92
可以使用 Java 的 HttpUrlConnection 类来发送 POST 请求,然后从响应中获取 token。接着,可以使用该 token 发送 GET 请求,获取其他数据。以下是示例代码:
```
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Base64;
public class Main {
public static void main(String[] args) throws Exception {
// 发送 POST 请求,获取 token
String token = getToken();
// 使用 token 发送 GET 请求,获取其他数据
String data = getData(token);
System.out.println(data);
}
private static String getToken() throws Exception {
String url = "https://example.com/token";
String username = "username";
String password = "password";
// 构造 POST 请求
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Authorization", "Basic " + getAuthHeader(username, password));
con.setDoOutput(true);
// 发送 POST 请求
String postParams = "grant_type=client_credentials";
con.getOutputStream().write(postParams.getBytes("UTF-8"));
// 读取响应
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
// 解析响应,获取 token
String token = response.toString().split("\"")[3];
return token;
}
private static String getData(String token) throws Exception {
String url = "https://example.com/data";
// 构造 GET 请求
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer " + token);
// 发送 GET 请求
int responseCode = con.getResponseCode();
// 读取响应
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
// 返回响应
return response.toString();
}
private static String getAuthHeader(String username, String password) {
String auth = username + ":" + password;
byte[] encodedAuth = Base64.getEncoder().encode(auth.getBytes());
return new String(encodedAuth);
}
}
```
其中,`getToken()` 方法发送 POST 请求,获取 token;`getData()` 方法使用 token 发送 GET 请求,获取数据。`getAuthHeader()` 方法用于构造 Authorization 头部,包含用户名和密码。注意,这里使用了 Base64 编码,因此需要导入 `java.util.Base64` 包。