我在从下面提到的网址中获取参数时遇到了问题,
String url = http://example.com/api_callback#access_token=XXXXXXXXXXXXXXX&state=enabled&scope=profile%20booking&token_type=bearer&expires_in=15551999
我提取参数的代码如下:
Uri uri = Uri.parseurl(url);
Set<String> paramNames = uri.getQueryParameterNames();
但是,您可以在网址中看到“#”而不是“?”这就是为什么我无法获得参数Set。
首先我想到的是用“?”代替“#”使用String.replace方法然后我认为他们可能是更好的解决方案。所以,如果你们有更好的解决方案,请帮助我。
答案 0 :(得分:2)
&#39;#&#39;被称为参考参数,在这里你可以做两件事之一,或者替换&#39;#&#39;用&#39;?&#39;并处理你的uri,即
String url = "http://example.com/api_callback#access_token=XXXXXXXXXXXXXXX&state=enabled&scope=profile%20booking&token_type=bearer&expires_in=15551999";
url = url.Replace("#","?"); //now your URI object to proceed further
或其他替代
String url = "http://example.com/api_callback#access_token=XXXXXXXXXXXXXXX&state=enabled&scope=profile%20booking&token_type=bearer&expires_in=15551999";
URL myurl = new URL(url);
String refrence = myurl.getRef(); //returns whatever after '#'
String[][] params = GetParameters(refrence);
并且函数GetParameters()的定义如下:
private String[][] GetParameters(String r)
{
try
{
String[] p = r.split("&"); //separate parameters mixed with values
String[][] data = new String[p.length][2];
for(int i = 0 ; i<p.length; i++) //iterate whole array
{
data[i][0] = p[i].split("=")[0]; //parameter name
data[i][1] = p[i].split("=")[1]; //parameter value
data[i][1] = data[i][1].replace("%"," "); //replace % with space character
}
return data; //return result
}
catch(Exception e)
{
return null;
}
}
我没有执行和测试代码我也很懒,所以我希望你能适应lolz:D
答案 1 :(得分:2)
最简单的方法:
String string = url.replace("#","?");
String access_token = Uri.parse(string).getQueryParameter("access_token");
Log.d("TAG", "AccessToken: " + access_token);
现在,您只需传递名称即可从网址中获取任何参数。
祝你好运
答案 2 :(得分:0)
您可以使用Android中的Uri类来执行此操作; https://developer.android.com/reference/android/net/Uri.html
Uri uri = Uri.parse("http://www.chalklit.in/post.html?chapter=V-Maths-Addition%20&%20Subtraction&post=394");
//Then you can even get a specific element from the query parameters as such;
String chapter = uri.getQueryParameter("chapter"); //will return "V-Maths-Addition "
答案 3 :(得分:0)
Uri uri = Uri.parse("http://www.chalklit.in/post.html?chapter=V-Maths- Addition%20&%20Subtraction&post=394");
String server = uri.getAuthority();
String path = uri.getPath();
String protocol = uri.getScheme();
Set<String> args = uri.getQueryParameterNames();
然后您甚至可以从查询参数中获取特定元素;
String chapter = uri.getQueryParameter("key");