在做新浪微博等开放平台授权时,这类开放平台API都提供一个自定义参数,用来提供给客户端自定义传递需要的参数给自己的服务器,而客户端传递给开放平台的自定义参数都是通过get方式的拼接回调url传递给自己的服务器的,这样,要想获得自定义参数就得从url中截取。
+ (NSString *)getParamValueFromUrl:(NSString *)url paramName:(NSString *)paramName
{
if (![paramName hasSuffix:@"="]) {
paramName = [NSString stringWithFormat:@"%@=", paramName];
}
NSString *str = nil;
NSRange start = [url rangeOfString:paramName];
if (start.location != NSNotFound) {
// confirm that the parameter is not a partial name match
unichar c = '?';
if (start.location != 0) {
c = [url characterAtIndex:start.location - 1];
}
if (c == '?' || c == '&' || c == '#') {
NSRange end = [[url substringFromIndex:start.location + start.length] rangeOfString:@"&"];
NSUInteger offset = start.location + start.length;
str = end.location == NSNotFound ?
[url substringFromIndex:offset] :
[url substringWithRange:NSMakeRange(offset, end.location)];
str = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
}
}
return str;
}