如何使用AFNetwork刷新或取消服务器调用(GET / POST)?

时间:2015-12-22 02:34:29

标签: ios objective-c afnetworking

我有Textfield USERNAME。在这里,当用户开始输入时,对于我必须点击服务器的每个字母,检查“用户名可用性”。现在我把它称为前景,所以它卡住了一点点。我无法取消或刷新以前的连接。任何的想法 ?

注意:我正在使用AFNetwork sessionManager。

2 个答案:

答案 0 :(得分:2)

如果您使用AFNetworking如下:

AFHTTPSessionManager *sessionManager = [AFHTTPSessionManager manager];

NSURLSessionDataTask *task = [sessionManager GET:@"http://example.com/resources.json" parameters:nil success:^(NSURLSessionTask *task, id responseObject) {
    NSLog(@"JSON: %@", responseObject);
} failure:^(NSURLSessionTask *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

你可以使用

[task cancel];

如果您使用AFNetworking如下:

AFHTTPRequestOperationManager *operationManager=[AFHTTPRequestOperationManager manager];
requestOperation=[operationManager GET:@"" parameters:nil success:^(AFHTTPRequestOperation * _Nonnull operation, id  _Nonnull responseObject) {

} failure:^(AFHTTPRequestOperation * _Nullable operation, NSError * _Nonnull error) {

}];

你可以使用

[requestOperation cancel];

答案 1 :(得分:0)

你的方法很好。但在这里我建议一些新的方法。当你打算输入时,每个角色为什么要调用web服务并增加负载。请查看以下建议。

  1. 如果您要检查用户名,则应在写完至少3个字母后调用api。因为在那之后,任何单词都可以用作用户名,否则那些就是字符。这完全取决于您正在实施的功能要求。

  2. 等到用户停止输入然后只调用web服务。中间是用户连续打字(直到保持一段时间),使用下面的代码取消之前的请求调用web服务。

  3. [NSObject cancelPerformSelectorsWithTarget:self];
    [self performSelector:@selector(sendSearchRequest) withObject:searchText afterDelay:0.1f];