【发布时间】:2017-12-26 03:45:36
【问题描述】:
我正在制作一个从英雄联盟 api 获取数据的程序,它会分析您当前的游戏并向您显示您的对手姓名、排名和资料。但我有一个问题,因为要获得某人的排名,我需要前往一个带有他的昵称的特定网址。问题是一些玩家在他们的昵称中加入了 å、à、è、ö 或类似的字符,当这种情况发生时,我的程序就会停止工作。我将向您展示我用来执行此操作的部分代码:
getSummonerID2 = new JSONObject(IOUtils.toString(newURL("https://euw1.api.riotgames.com/lol/summoner/v3/summoners/by-name/"+ newPlayerNick[i] + "?api_key=" + APIKEY), Charset.forName("UTF-8")));
这是它抛出的错误: java.io.IOException:服务器返回 HTTP 响应代码:400 用于 URL:https://euw1.api.riotgames.com/lol/summoner/v3/summoners/by-name/JegFårDetDårligt?api_key=(我的密钥,不能显示它)
我之前遇到过空格,因为看起来你甚至不能在 url 中放置空格,所以我为解决这个问题所做的事情是:
newPlayerNick[i] = playerNick[i].replaceAll("\\s+","_");
这基本上用 _ 替换了每个空格,所以效果很好,但我不能用普通的“a”替换“å”,因为它们是不同的字符。
那么,您知道任何解决方案吗?非常感谢你们。
【问题讨论】:
标签: java url special-characters encode http-status-code-400