gpt4 book ai didi

java - 尝试从只有一行的网站获取字符串

转载 作者:行者123 更新时间:2023-12-02 00:40:17 25 4
gpt4 key购买 nike

基本上,我试图从 API 中获取一个字符串,而这个 API 只是一个空白页,只有一行,其中包含所需的所有信息,而我只是想获取其中的一部分。这部分是每个人的 ID,具有相同数量的字符。API 为每个人提供了这一行:{“id”:“anExampleUniqueWhichHas32Charact”,“name”:“玩家”}我稍微改变了代码,这样你就会明白,因为我正在使用一个专门用于此目的的库,但我只是想让网络抓取正确。

所以我尝试做的是 Web Scrape 并获取该数量的 string.length。

但是这不起作用。

我知道我也可以使用正则表达式作为模式,但我真的不知道如何使用它。老实说,正则表达式在这种情况下会更有帮助。

public void checkAPI() throws IOException {
String person = userInput.nextLine(); // It's just any name.
URL url = new URL("https://api.mojang.com/users/profiles/minecraft/" +
person);
URLConnection con = url.openConnection();
InputStream isr =con.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(isr));
String line;
while ((line = br.readLine()) != null) {
if (line.length() == 32) {
System.out.println(line);
}
}
}

我目前只希望打印该行,稍后当它起作用时我会将它用于其他东西。没有抛出任何错误。

最佳答案

API 使用 Json。 https://de.wikipedia.org/wiki/JavaScript_Object_Notation

您可以使用标准的 json 解析器,例如 jackson https://en.wikipedia.org/wiki/Jackson_(API)解析并查询结果。

ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(new URL("https://api.mojang.com/users/profiles/minecraft/KrisJelbring"));
System.out.println("Name: "+node.get("name"));
System.out.println("Id: "+node.get("id"));

但是如果你不喜欢使用 jackson,你可以手动完成:但那是无稽之谈,而且不太稳定:

while ((line = br.readLine()) != null)
{
int startOfId = line.indexOf("\"id\"") + 4;
int startOfValue = line.indexOf("\"", startOfId) + 1;
int endOfValue = line.indexOf("\"", startOfValue);
System.out.println("id: " + line.substring(startOfValue, endOfValue));
}

关于java - 尝试从只有一行的网站获取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57946658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com