일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- GCM
- Google Cloud Messasging
- contentprovider
- gradle
- Google Cloud Messasing
- Activity 수명 주기
- 카카오톡
- HTTP
- 안드로이드 개발 레벨업 교과서
- NSURLConnection
- Android O
- 트위터
- service
- BLOCK
- ios9
- Push
- AccountManager
- Android
- 다른 앱에서 열기
- In-app Billing
- Unchecked Exception
- android studio
- xcode
- 데이터 공유
- ios
- unreal
- 페이스북
- 배포
- Android O Preview
- signing
- Today
- Total
노블의 개발이야기
[iOS] NSString에 URL Encoding과 URL Decoding 메소드 추가하기 본문
[iOS] NSString에 URL Encoding과 URL Decoding 메소드 추가하기
http 전송에서 GET으로 보내는 파라미터에 URLEncoding을 해야하는 경우가 있다.
예를 들어 트위터 검색에서 검색어를 사용할 때 @saltfactory를 검색하고 싶으면 from:saltfactory라고 검색하면 되는데 이때 ":" 문자를 URL Encoding으로 보내줘야 한다.
http://search.twitter.com/search.json?q=from%3Asaltfactory
이때 그냥 한글이나 특수 문자를 보내면 데이터가 바르게 전달되지 않는다. 그래서 URLEncoding을 해서 전송해야하는데 NSString 자체에는 URLEncoding 메소드가 존재하지 않는다.
그래서 카테고리를 이용해서 NSString에 stringByUrlEncoding과 stringByUrlDecoding을 추가해서 사용하면 편리하다.
@implementation NSString (url)
-(NSString *)stringByUrlEncoding {
return [(NSString*)CFURLCreateStringByAddingPercentEscapes(
kCFAllocatorDefault,
(CFStringRef)self,
NULL,
CFSTR(":/?#[]@!$&’()*+,;="),
kCFStringEncodingUTF8) autorelease];
}
-(NSString *)stringByUrlDecoding {
return [self stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
}
@end
ARC 적용
@implementation NSString (url)
-(NSString *)stringByUrlEncoding {
return (__bridge_transfer NSString*)CFURLCreateStringByAddingPercentEscapes(
kCFAllocatorDefault,
(__bridge CFStringRef)self,
NULL,
CFSTR(":/?#[]@!$&’()*+,;="),
kCFStringEncodingUTF8);
}
-(NSString *)stringByUrlDecoding {
return [self stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
}
@end
사용법
NSString *searchUrl = @"http://search.twitter.com/search.json?q=from:saltfactory";
searchUrl = [searchUrl stringByUrlEncoding];
'iOS' 카테고리의 다른 글
[iOS] GCD(Grand Central Dispatch) 사용하기 (0) | 2015.04.23 |
---|---|
[IOS] ARC - Toll-Free Bridging (348) | 2015.04.23 |
[iOS] 네트워크 상태 체크 (0) | 2015.04.23 |
[iOS] NSUserDefaults (0) | 2015.04.17 |
[iOS] KeyChain (0) | 2015.04.16 |