От коллеги я знаю, что файлы cookie также необходимы. А именно PHPSESSID и еще один, назовем его OTHER_COOKIE
Я извлекаю их из своего браузера.
Однако я не могу использовать эти файлы cookie уже два дня. . Я не могу найти способ заставить XmlRpcClient взять с собой эти файлы cookie. Всегда получаю ответ, что у меня нет доступа к этим страницам. Вероятно, для этого следует использовать такие классы, как XmlRpcTransport или аналогичные, но я не могу добиться большего. Ситуация с документацией ужасная.
Вот код, который, по крайней мере, работает для страниц, не требующих входа в систему.
Переведено с помощью DeepL. com (бесплатная версия)
(Если это играет роль: страница, которую я пытаюсь прочитать, является «МойнМойнВики».)
private final XmlRpcClient client;
public MoinMoinWikiClient(String baseUrl, String username, String password) throws Exception {
String endpointUrl = baseUrl + "/moinmoin/?action=xmlrpc2";
XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl() {
@Override
public String getBasicUserName() {
return username;
}
@Override
public String getBasicPassword() {
return password;
}
};
config.setServerURL(new URL(endpointUrl));
this.client = new XmlRpcClient();
client.setConfig(config);
String examplePageName = "any_page";
HashMap result = (HashMap)client.execute("getPageInfo", new Object[]{examplePageName});
info("Initialized XML-RPC client with URL: " + xmlRpcEndpoint);
}
Я два дня изучал решения и документацию. Я давно и подробно расспрашивал ChatGPI
Бесчисленное количество предполагаемых решений заканчивалось тем, что классы были неизвестны и их нельзя было добавить в Maven. например CookieManager, CookiesStore ...
public MoinMoinWikiClient(String wikiUrl, String username, String password) throws Exception {
String endpointUrl = wikiUrl + "/moinmoin/?action=xmlrpc2";
XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl() {
@Override
public String getBasicUserName() {
return username;
}
@Override
public String getBasicPassword() {
return password;
}
};
config.setServerURL(new URL(endpointUrl));
BasicCookieStore cookieStore = new BasicCookieStore();
List cookies = new ArrayList();
cookies.add(new org.apache.http.impl.cookie.BasicClientCookie("PHPSESSID", Main.PHPSESSID));
cookies.add(new org.apache.http.impl.cookie.BasicClientCookie("OTHER_COOKIE", Main.OTHER_COOKIE));
cookieStore.addCookies(cookies.toArray(new Cookie[0]));
CloseableHttpClient httpClient = HttpClients.custom()
.setDefaultCookieStore(cookieStore)
.build();
this.client = new XmlRpcClient();
client.setConfig(config);
}
Подробнее здесь: https://stackoverflow.com/questions/787 ... es-in-java
Мобильная версия