Ale*_*one 4 url objective-c ios afnetworking
我有一个AFHTTPSessionManager
负责发出GET请求的实例.请求中的一个参数 - 名称中可以包含空格,也可能包含URL中可能不可接受的其他字符.
我看到AFHTTPSessionManager
它不会自动用适当的%符号替换空格,因此下面的请求将失败.如何处理我的字符串以将其转换为URL兼容字符串? test user to test%20user
我可以通过替换字符串的出现来做字符串,但我正在寻找一种更通用的方法来处理所有非url安全字符.
NSURL* baseURL = [NSURL URLWithString:[APP_DELEGATE hostString]];
AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:baseURL];
//is there a way for me
NSString* path = @"user/?name=test user"
[manager GET:path parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) {
DLog(@"Success: %@",responseObject);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
DLog(@"Failure: %@",error);
}];
Run Code Online (Sandbox Code Playgroud)
我认为你正在寻找的方法是
- (NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding
Run Code Online (Sandbox Code Playgroud)
那是:
NSString* path = [@"user/?name=test user" stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
Run Code Online (Sandbox Code Playgroud)
在您的情况下,您可能只需要将百分比编码应用于可能包含无效字符的实际值(即"测试用户")
另一个选择是使用AFNetworking的get方法提供的NSDictionary.使用此选项,您可以使用键/值对{"name":"test user"}创建一个nsdictionary,然后在AF的get方法中传递它.AF会将此作为查询字符串添加到您的获取路径中.
NSString* path = @"user";
NSDictionary* params = [NSDictionary dictionaryWithObject:@"test user" forKey:@"name"];
[manager GET:path parameters:params success...
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1804 次 |
最近记录: |