我遇到了一个错误:
W/System.err(32720): java.lang.IllegalArgumentException: Illegal character in query at index 89: https://api.mongolab.com/api/1/databases/activity_recognition/collections/entropy_data?f={%20mean0%22:%201}&apiKey=myApiKey
String apiURI = "https://api.mongolab.com/api/1/databases/activity_recognition/collections/entropy_data?f={%22mean0%22:%201}&apiKey=myApiKey";
- 当我把这个URI粘贴到浏览器中时,它可以正常工作。
- 当我将其粘贴到浏览器中,打开它,然后将URI复制回我的代码中时,它没有起到作用。
- 索引89是{ - 这是一个非法字符吗?
我尝试过这样做 - 用%7B替换花括号:但这并没有起到作用。
https://api.mongolab.com/api/1/databases/activity_recognition/collections/entropy_data?f=%7B"mean0":%201%7D&apiKey=myApiKey
有人吗?
编辑:
String query = "https://api.mongolab.com/api/1/databases/activity_recognition/collections/entropy_data?f={\""+arrayName+"\":%201}&apiKey=myApiKey";
try {
query = URLEncoder.encode(query, "utf-8");
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
String apiURI = query;
不起作用。现在我得到了:
05-23 22:13:21.855: E/SendMail(12428): Target host must not be null, or set in parameters. scheme=null, host=null, path=https://api.mongolab.com/api/1/databases/activity_recognition/collections/entropy_data?f={"mean0":%201}&apiKey=myAPI
如果我在查询声明中将%20更改为空格,则会出现以下错误:
05-23 22:14:51.435: E/SendMail(13164): Target host must not be null, or set in parameters. scheme=null, host=null, path=https://api.mongolab.com/api/1/databases/activity_recognition/collections/entropy_data?f={"mean0":+1}&apiKey=myAPI
如果我不在中间使用arrayName字符串,而是直接使用浏览器中的字符串,效果是一样的!
:
编码为%3A
,最好使用 URLEncoder 而不是像你所做的那样硬编码一个已编码的字符串。 - FoamyGuyBase 64 URL编码
,看看是否有帮助。请参考这个答案。 - Shobhit Puri