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。 –