从NSURL获取参数

时间:2014-02-16 07:43:55

标签: ios nsurl


在我的应用程序中,我需要从此URL获取参数“access_token”和“user_id”:
https://oauth.vk.com/blank.html#access_token=b1b33dfaa3&expires_in=86400&user_id=311515

以下是我在webViewDidFinishLoad中访问“user_id”参数的代码:

NSArray *userAr = [[[[webView request] URL] absoluteString] componentsSeparatedByString:@"&user_id="];

NSString *user_id = [userAr lastObject];


如何获得“access_token”?如果我使用相同的方法它不起作用......

3 个答案:

答案 0 :(得分:1)

我在我的应用程序中实现了相同的功能。

如果您使用webView来使用此

NSURL* url = [[webView request] URL];

NSString *string =  [[url absoluteString] stringByReplacingOccurrencesOfString:@"#" withString:@"&"]; (here it's tweak to chnage '#' to '&')

NSArray *components = [string componentsSeparatedByString:@"&"];
NSLog(@"queryParams %@", components); 

基本上我们需要划分我们的URL in to two sub-part,根据这个你得到main url and other part as list of parameter

在这里,您将获得与URL

相关的所有参数

希望这会对你有所帮助。

答案 1 :(得分:0)

尝试理解代码。 componentsSeparatedByString创建一个由&user_id=分隔的较小字符串数组。这意味着,您的输出将是:

Array of ["https://oauth.vk.com/blank.html#access_token=b1b33dfaa3&expires_in=86400", "311515"]

现在你明白了为什么lastObject可以获得user_id的价值。现在尝试使用相同的方法来获取access_token的值。

提示:您需要将&设置为分隔符。

答案 2 :(得分:0)

我将这些代码细化为您提供帮助:

NSArray *query = @"https://oauth.vk.com/blank.html#access_token=b1b33dfaa3&expires_in=86400&user_id=311515 ";
NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
for (NSString *param in [query componentsSeparatedByString:@"&"]) {
    NSArray *parts = [param componentsSeparatedByString:@"="];
    if([parts count] < 2) continue;
    [params setObject:[parts objectAtIndex:1] forKey:[parts objectAtIndex:0]];
}