jsoup这个代码有什么问题?(java)(错误:找不到符号方法getValue())
周围有**的地方抛出找不到符号方法getValue()错误
顺便说一下,代码是检查采矿工艺账户名称有效性的程序的一部分;如果有或没有
public String connectToMigrate() {
try {
Connection.Response response =
Jsoup.connect("https://account.mojang.com/migrate").execute();
Document doc = response.parse();
Element authToken = doc.select("input[name^=authenticityToken]").get(0);
Map cookies = response.cookies();
Connection connection =
Jsoup.connect("https://account.mojang.com/migrate/check")
.data("authenticityToken", authToken.val())
.data("mcusername", this.username)
.data("password", this.password)
.method(Connection.Method.POST)
.followRedirects(true);
connection.timeout(10000);
for (Object cookie : cookies.entrySet()) {
connection.cookie((String) **cookie.getValue**(), (String) **cookie.getKey**());
}
Connection.Response postResponse = connection.execute();
if (postResponse.body().toLowerCase().contains("invalid username"))
return "error";
if (postResponse.body().toLowerCase().contains("already been migrated"))
return "error";
if (postResponse.body().toLowerCase().contains("locked out"))
return "error";
if (postResponse.body().toLowerCase().contains("bought minecraft"))
return "error";
if (postResponse.body().toLowerCase().contains("too many failed attempts")) {
getNewProxy();
return "try again";
}
if (postResponse.body().toLowerCase().contains("error")) {
return "try again";
}
Map cookies2 = postResponse.cookies();
Connection connection2 =
Jsoup.connect("https://account.mojang.com/migrate/chooseEmail");
for (Object cookie : cookies2.entrySet()) {
connection2.cookie((String) **cookie.getValue()**, (String) **cookie.getKey()**);
}
connection2.timeout(10000);
Connection.Response postResponse2 = connection2.execute();
String s = postResponse2.body().toLowerCase();
s = s.split("i want to use <strong>")[1];
s = s.split("</strong>")[0];
String email = s;
return email; } catch (Exception e) {
}return "try again";
}
# 1 楼答案
cookie
是一个不包含getValue()
方法的对象。在调用getValue()
之前,需要将其强制转换为正确的类型# 2 楼答案
我想你只是误解了如何在java中使用地图。 这应该很容易,试试这个:
但是,您可以通过执行以下操作一次复制所有cookie:
# 3 楼答案
JSoup
Connection.Response
对象上的getCookies
返回一个Map<String, String>
因此,在您的第一个
for
循环中:每个
cookie
都是一个Set
,并且Set
不支持这些方法(请参见docs)相反,在这些循环中,您应该迭代
Map
键,这将是cookie名称:现在,每个
cookie
都是键,您可以使用cookies.get(cookie)
查询原始映射中的值但是Jsoup的
Connection
已经允许您直接复制cookies(参见docs),无需循环: