как получить нужные значения из URL - PullRequest
1 голос
/ 13 января 2012

Мне нужно извлечь значение переменной из строки, которая является URL.Строка / URL-адрес загружается как часть отдельного php-запроса, а не URL-адреса в браузере.

URL будет выглядеть так:bearer & expires_in = 3600

Как мне получить значение access_token, которое в этом примере равно ab8w4azq2xv3dr4ab37vvzmh?

Ответы [ 3 ]

1 голос
/ 13 января 2012

Этот код должен сделать это:

- (NSString *)extractToken:(NSURL *)URL
{
    NSString *urlString = [URL absoluteString];
    NSRange start = [urlString rangeOfString:@"access_token="];
    if (start.location != NSNotFound)
    {
        NSString *token = [urlString substringFromIndex:start.location+start.length];
        NSRange end = [token rangeOfString:@"&"];
        if (end.location != NSNotFound)
        {
            //trim off other parameters
            token = [token substringToIndex:end.location];
        }
        return token;
    }
    //not found
    return nil;
}

В качестве альтернативы, здесь есть более общее решение, которое извлечет все параметры запроса в словарь:

- (NSDictionary *)URLQueryParameters:(NSURL *)URL
{
    NSString *queryString = [URL query];
    NSMutableDictionary *result = [NSMutableDictionary dictionary];
    NSArray *parameters = [queryString componentsSeparatedByString:@"&"];
    for (NSString *parameter in parameters)
    {
        NSArray *parts = [parameter componentsSeparatedByString:@"="];
        NSString *key = [[parts objectAtIndex:0] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        if ([parts count] > 1)
        {
            id value = [[parts objectAtIndex:1] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
            [result setObject:value forKey:key];
        }
    }
    return result;
}
0 голосов
/ 23 июня 2012
   NSMutableDictionary *querycomponent = [[NSMutableDictionary alloc] init];

    if (![query isEqualToString:@""]){

        NSArray *queryArray = [query componentsSeparatedByString:@"&"];

        for (NSString *subquery in queryArray){

            NSArray *subqueryArray = [subquery componentsSeparatedByString:@"="];

            NSString *key = [subqueryArray objectAtIndex:0];
            NSString *val = [subqueryArray objectAtIndex:1];

            [querycomponent setObject:val forKey:key];

        }

        NSLog(@"querycomponent %@",querycomponent);
    }
0 голосов
/ 18 мая 2012

Хорошая категория для NSDictionary:

    #import "NSDictionary+URL.h"

@implementation NSDictionary (URL)
+ (NSDictionary *)dictionaryWithUrlString:(NSString *)urlString{
    NSRange urlRange = [urlString rangeOfString:@"?"];
    if(urlRange.length>0){
        urlString = [urlString substringFromIndex:urlRange.length+urlRange.location];
    }
    NSArray *pairsArray = [urlString componentsSeparatedByString:@"&"];

    NSMutableDictionary *parametersDictionary = [[NSMutableDictionary alloc] initWithCapacity:[pairsArray count]];
    for(NSString *pairString in pairsArray){

        NSArray *valuesArray = [pairString componentsSeparatedByString:@"="];
        if([valuesArray count]==2){
            [parametersDictionary setValue:[valuesArray objectAtIndex:1] forKey:[valuesArray objectAtIndex:0]];
        } 
    }
    return [parametersDictionary autorelease];
}
@end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...