iOS的特殊字符我試圖讓API調用:在URL
api.app.com/foo/search/Öhm
,其中歐姆爲搜索詞。問題是這個URL導致了一個錯誤的URL異常,而正常的字符工作正常。我嘗試過
[searchText stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]
但是這會產生很多%符號。 api預計Öhm。任何解決這個問題的方法?我正在使用restkit。
完整的錯誤:
Error Domain=NSURLErrorDomain Code=-1000 "bad URL" UserInfo=0x16e719d0 {NSUnderlyingError=0x16d70d10 "bad URL", NSLocalizedDescription=bad URL} 2014-04-03 18:26:55.404 My App[6844:3807] E restkit.network:RKObjectRequestOperation.m:243 GET '(null)' (0/0 objects) [request=0.0084s mapping=0.0000s total=0.0769s]: Error Domain=NSURLErrorDomain Code=-1000 "bad URL" UserInfo=0x16e719d0 {NSUnderlyingError=0x16d70d10 "bad URL", NSLocalizedDescription=bad URL}
的TERMIN是(空),而不是歐姆。
代碼:
[[ApiSearchManager sharedManager] search:^(NSArray *result){
//handle success
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
//handle fail - it fails for Öhm
} query:searchTerm];
,並在較低的水平:
- (void) search:(void (^)(NSArray *))success failure:(void (^)(RKObjectRequestOperation *, NSError *))failure query:(NSString *)query{
[self getObjectsAtPath:[NSString stringWithFormat:@"foo/search/%@", query] parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
if (success) {
success(mappingResult.array);
}
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
if (failure) {
failure(operation, error);
}
}];
}
你能否顯示導致「不良網址異常」的代碼? – matt
我跑了'NSString * s = @「http://api.app.com/foo/search/Öhm」; NSURL * url = [NSURL URLWithString:s];'我沒有得到任何異常。 – matt
@matt它在restkit中,而restkit在內部使用asihttprequest。 –