您的位置:首页 > 移动开发 > IOS开发

IOS开发之CFURLCreateStringByAddingPercentEscapes--URL 编码

2012-10-17 11:07 459 查看
#define SINA_API_AUTHORIZE @"https://api.weibo.com/oauth2/authorize"
#define SINA_APP_KEY @"3456404324"

- (NSURL*)getOauthCodeUrl {
//获取auth_code or access_token;留给webview用
//https://api.weibo.com/oauth2/authorize

//https://api.weibo.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI
NSMutableDictionary *params = [NSMutableDictionary
dictionaryWithObjectsAndKeys:

SINA_APP_KEY,
@"client_id", //申请的appkey
@"token",
@"response_type", //access_token

@"http://hi.baidu.com/jt_one", @"redirect_uri",
//申请时的重定向地址

@"mobile",
@"display", //web页面的显示方式

nil];
NSURL *url = [self
generateURL:SINA_API_AUTHORIZE
params:params]; //参数是可变个数的
NSLog(@"url= %@",url);
return url;
}

- (NSURL *)generateURL:(NSString *)baseURL params:(NSDictionary *)params {
if (params) {
NSMutableArray *pairs = [NSMutableArray
array];
for (NSString *key
in params.keyEnumerator) {
NSString *value = [params
objectForKey:key];
//将要添加到URL的字符串进行特殊处理,如果这些字符串含有 &,
? 这些特殊字符,用“%+ASCII” 代替
NSString *escaped_value = (NSString *)CFURLCreateStringByAddingPercentEscapes(

NULL,
/* allocator */

(CFStringRef)value,

NULL, /* charactersToLeaveUnescaped */

(CFStringRef)@"!*'();:@&=+$,/?%#[]",

kCFStringEncodingUTF8);
[pairs addObject:[NSString
stringWithFormat:@"%@=%@", key, value]];
[escaped_value
release];
}

NSString *query = [pairs
componentsJoinedByString:@"&"];
NSString *url = [NSString
stringWithFormat:@"%@?%@", baseURL, query];
return [NSURL
URLWithString:url];
}
else {
return [NSURL
URLWithString:baseURL];
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: