IOS開發之CFURLCreateStringByAddingPercentEscapes–URL 編碼

來源:互聯網
上載者:User


#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];

}

}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.