Я пытаюсь интегрировать различные API, предоставляемые MediaWiki, в свой проект SpringBoot. До сих пор я пытался использовать его Login API. Подробности см. В этом документе: https://www.mediawiki.org/wiki/API: Login
Но я получаю такую ошибку.
{
"warnings": {
"main": {
"*": "Subscribe to the mediawiki-api-announce mailing list at <https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce> for notice of API deprecations and breaking changes. Use [[Special:ApiFeatureUsage]] to see usage of deprecated features by your application."
},
"login": {
"*": "Fetching a token via \"action=login\" is deprecated. Use \"action=query&meta=tokens&type=login\" instead."
}
},
"login": {
"result": "NeedToken",
"token": "2c217d741ad4035d6ca51ac5185756ef5eb52ca0+\\"
}
}
Хотя я передаю токен перед нажатием вызов после входа в систему. Пожалуйста, обратитесь к моему коду
//fetching token for the post call.
ResponseEntity<TokenResponse> tokenResponse =
new RestTemplate().getForEntity("https://en.wikipedia.org/w/api.php?action=query&meta=tokens&type=login&format=json"
, TokenResponse.class);
if (tokenResponse.getStatusCode().is2xxSuccessful()) {
//get the token from the response
String logintoken = tokenResponse.getBody().getQuery().getTokens().get("logintoken");
String cookies = tokenResponse.getHeaders().get(HttpHeaders.SET_COOKIE).stream().collect(Collectors.joining(";"));
//now do the post login request
String serviceUrl = prepareURL(loginWikiRequest.getUserName(), loginWikiRequest.getPassword(), logintoken);
LoginRequest loginRequest = new LoginRequest();
loginRequest.setLgpassword(loginWikiRequest.getPassword());
loginRequest.setLgtoken(logintoken);
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.add("Cookie", cookies);
HttpEntity requestEntity = new HttpEntity(loginRequest, httpHeaders);
ResponseEntity<HashMap> loginResponse = new RestTemplate().exchange(serviceUrl, HttpMethod.POST, requestEntity, HashMap.class);
return loginResponse.getBody();
} else {
return null;
}
Я просмотрел эту ошибку в Google, и причиной, которую я смог найти, является неправильное управление сеансом или обработка сломанных файлов cookie. Но я не могу понять, как это исправить. Любая помощь будет принята с благодарностью.