如何从iOS中的url解析值?

时间:2014-11-05 12:03:17

标签: ios objective-c oauth nsurl

我有一个网址:

DBSession url : db-qf8erkjgfnhno://1/connect?oauth_token_secret=7ek3fhnfnhla&state=58444830-7764-4DBE-A4F1-84B8604sv2C5&oauth_token=c93dvvaa5b47&uid=2841089

我想取oauth_token_secretoauth_token的值。我尝试使用[url query]方法获取oauth_token_secret=7ek3fhnfnhla&state=58444830-7764-4DBE-A4F1-84B8604sv2C5&oauth_token=c93dvvaa5b47&uid=2841089,但我找不到获取oauth_token_secretoauth_token值的方法。

请帮帮我。

2 个答案:

答案 0 :(得分:2)

您可以将查询参数解析为NSMutableDictionary,然后从那里检索值。

NSString *query = [url query];  
NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
for (NSString *param in [query componentsSeparatedByString:@"&"]) {
  NSArray *elts = [param componentsSeparatedByString:@"="];
  if([elts count] < 2) continue;
  [params setObject:[elts objectAtIndex:1] forKey:[elts objectAtIndex:0]];
}
NSLog(@"oauth_token_secret : %@", params[@"oauth_token_secret"]);    
NSLog(@"oauth_token : %@", params[@"oauth_token"]);

答案 1 :(得分:0)

这是一个在两个字符之间返回字符串的函数。这是回复你的誓言令牌。根据您的需要进行更改。

-(NSString*)contentsInStrings:(NSString *)str
{
NSString *subString = nil;
NSRange range1 = [str rangeOfString:@"&oauth_token="];
NSRange range2 = [str rangeOfString:@"&"];
if ((range1.length == 1) && (range2.length == 1) && (range2.location > range1.location))
{
    NSRange range3;
    range3.location = range1.location+1;
    range3.length = (range2.location - range1.location)-1;
    subString = [str substringWithRange:range3];
}
return subString;
}