【发布时间】:2020-08-25 17:56:22
【问题描述】:
我正在尝试使用 POST 方法调用 API。其中没有正文,所有参数都在 URL 中。
这就是我构建请求以通过 okHttpClient 版本调用的方式:
Request requestToken = new Request.Builder()
.url(TOKEN_GEN_API_URL + ConfigConstants.TOKEN_CLIENT_ID_PARAM
+ TOKEN_CLIENT_ID_PARAM_VALUE + ConfigConstants.TOKEN_CLINET_SECRET_PARAM
+ TOKEN_CLIENT_SECRET_PARAM_VALUE + ConfigConstants.TOKEN_GRANT_TYPE_PARAM
+ TOKEN_GRANT_TYPE_PARAM_VALUE)
.post(requestBody)
.addHeader("Content-Type", "application/json")
.addHeader("cache-control", "no-cache")
.build();
ConfigConstants 类:
public class ConfigConstants {
public static final String TOKEN_CLIENT_ID_PARAM = "?client_id=";
public static final String TOKEN_CLINET_SECRET_PARAM = "&client_secret=";
public static final String TOKEN_GRANT_TYPE_PARAM = "&grant_type=";
}
这将创建类似这样的 URL:
<endpoint>?client_id=...&client_secret=..&grant_type=..
现在,我正在尝试通过 RestTemplate 调用它,我认为它不会那么复杂。但是,我不确定如何在没有任何正文的情况下构建此请求。
@RestController
public class TokenRestAPI {
@Autowired
RestTemplate restTemplate;
private static final Logger logger = LogManager.getLogger(TokenRestAPI.class);
@Value("${TOKEN_CLIENT_SEC_PARAM_VALUE}")
private String TOKEN_CLIENT_SECRET_PARAM_VALUE;
@Value("${TOKEN_CLIENT_ID_PARAM_VALUE}")
private String TOKEN_CLIENT_ID_PARAM_VALUE;
@Value("${TOKEN_GRANT_TYPE_PARAM_VALUE}")
private String TOKEN_GRANT_TYPE_PARAM_VALUE;
@Value("${TOKEN_GEN_API_URL}")
private String TOKEN_GEN_API_URL;
@PostMapping("/")
public void getAuthToken() {
ResponseEntity<TokenPOJO> response = restTemplate.postForEntity(TOKEN_GEN_API_URL, request, TokenPOJO.class);
}
}
【问题讨论】:
标签: spring-boot