我有一个字符串表示包含空格的URL,并希望将其转换为URI对象.如果是简单的尝试
String myString = "http://myhost.com/media/File Name that has spaces inside.mp3";
URI myUri = new URI(myString);
Run Code Online (Sandbox Code Playgroud)
它给了我
java.net.URISyntaxException: Illegal character in path at index X
Run Code Online (Sandbox Code Playgroud)
其中index X是URL字符串中第一个空格的位置.
如何可以解析myString到一个URI对象?
我收到一个错误:
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";
Run Code Online (Sandbox Code Playgroud)
我尝试这样做-用%7B代替大括号:但这无济于事
https://api.mongolab.com/api/1/databases/activity_recognition/collections/entropy_data?f=%7B"mean0":%201%7D&apiKey=myApiKey
Run Code Online (Sandbox Code Playgroud)
任何人?
编辑:
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;
Run Code Online (Sandbox Code Playgroud)
没有帮助。现在我得到:
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
Run Code Online (Sandbox Code Playgroud)
如果我在查询的声明中将%20更改为空格,则会得到:
05-23 22:14:51.435: E/SendMail(13164): Target host must not be null, or set in parameters. scheme=null, …Run Code Online (Sandbox Code Playgroud)