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];
}
}
#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];
}
}
相关文章推荐
- IOS开发之CFURLCreateStringByAddingPercentEscapes--URL 编码
- URL 编码:CFURLCreateStringByAddingPercentEscapes
- URL 编码:CFURLCreateStringByAddingPercentEscapes
- URL 编码:CFURLCreateStringByAddingPercentEscapes
- URL 编码:CFURLCreateStringByAddingPercentEscapes
- URL 编码:CFURLCreateStringByAddingPercentEscapes
- URL 编码:CFURLCreateStringByAddingPercentEscapes
- URL 编码:CFURLCreateStringByAddingPercentEscapes
- URL 编码:CFURLCreateStringByAddingPercentEscapes
- CFURLCreateStringByAddingPercentEscapes
- URL 编码:CFURLCreateStringByAddingPercentEscapes[转]
- URL 编码:CFURLCreateStringByAddingPercentEscapes[转]
- URL编码CFURLCreateStringByAddingPercentEscapes使用(ARC)
- CFURLCreateStringByAddingPercentEscapes
- URL Encoding - CFURLCreateStringByAddingPercentEscapes
- CFURLCreateStringByAddingPercentEscapes
- CFURLCreateStringByAddingPercentEscapes
- CFURLCreateStringByAddingPercentEscapes
- CFURLCreateStringByAddingPercentEscapes
- IOS使用CFURLCreateStringByAddingPercentEscapes进行URL编码