- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在制作一个使用 AFNetworking 库的项目。我用它来检查网络服务的登录名和密码。如果没问题,这会给我一个 200 代码。如果是 200,我将一个 bool 值设置为 true,以便应用程序可以继续。但是这个 bool 值没有在正确的时间设置。我总是需要在我的 login button
上按两次才能工作。这是我设置 bool 值的代码。
- (BOOL)credentialsValidated {
self.progressHUD = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
self.progressHUD.labelText = @"Loading";
self.progressHUD.mode = MBProgressHUDModeIndeterminate;
self.progressHUD.dimBackground = YES;
[[API sharedInstance] loginCommand:[NSMutableDictionary dictionaryWithObjectsAndKeys:_txtLogin.text,@"email",_txtPass.text,@"pwd", nil] onCompletion:^(NSDictionary *json){
//completion
if(![json objectForKey:@"error"]){
NSLog(@"status %@",[json valueForKeyPath:@"data.status"]);
if([[json valueForKeyPath:@"data.status"]intValue] == 200){
//Create user object
_loginstatus = YES;
[self.progressHUD hide:YES afterDelay:5];
}else{
//show validation
_txtLogin.text = @"";
_txtPass.text = @"";
_loginstatus = NO;
}
}else {
NSLog(@"Cannot connect to the server");
}
}];
if(_loginstatus){
NSLog(@"true");
}else{
NSLog(@"false");
}
[self.progressHUD hide:YES afterDelay:5];
return _loginstatus;
}
这是我的 API 代码。
-(void)loginCommand:(NSMutableDictionary *)params onCompletion:(JSONResponseBlock)completionBlock{
NSLog(@"%@%@",kAPIHost,kAPILogin);
NSMutableURLRequest *apiRequest = [self multipartFormRequestWithMethod:@"POST" path:kAPILogin parameters:params constructingBodyWithBlock:^(id <AFMultipartFormData>formData){
//TODO: attach file if needed
}];
AFJSONRequestOperation *operation = [[AFJSONRequestOperation alloc] initWithRequest:apiRequest];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject){
//success !
NSLog(@"SUCCESSSS!");
completionBlock(responseObject);
}failure:^(AFHTTPRequestOperation *operation, NSError *error){
//Failure
NSLog(@"FAILUREE!");
completionBlock([NSDictionary dictionaryWithObject:[error localizedDescription] forKey:@"error"]);
}];
[operation start];
}
当我在 [operation start]
下方放置 [operation waitUntilFinish]
代码时,应用程序崩溃了。
有人可以帮我解决这个问题吗?
亲切的问候
日志这是我在我 2 两次按下登录按钮后打印的日志
2012-12-28 09:36:00.547 Offitel[6532:907] http://virtuele-receptie.******.sanmax.be/nl/webservice/company-user/****/*****/**************
2012-12-28 09:36:00.561 Offitel[6532:907] false
2012-12-28 09:36:01.604 Offitel[6532:907] SUCCESSSS!
2012-12-28 09:36:01.605 Offitel[6532:907] status 200
2012-12-28 09:36:20.742 Offitel[6532:907] aanmelden pressed
2012-12-28 09:36:20.746 Offitel[6532:907] http://virtuele-receptie.******.sanmax.be/nl/webservice/company-user/****/*****/**************
2012-12-28 09:36:20.748 Offitel[6532:907] true
2012-12-28 09:36:22.184 Offitel[6532:907] SUCCESSSS!
2012-12-28 09:36:22.184 Offitel[6532:907] status 200
最佳答案
如果你这样做
return _loginstatus;
您没有等待操作完成,因此您没有返回服务器发送给您的应用程序的内容。在这种情况下,我通常做的是在触发登录操作时显示一个 UIActivityIndicator
,并且在服务器响应之前什么都不做。然后,我为任何变量设置适当的值,在这种情况下,我会转到主屏幕。
请记住,当您使用 AFNetworking
时,您总是在执行异步操作。
编辑
代码示例:
- (void)loginActionWithPassword:(NSString *)pass
{
// Add progress HUD to show feedback
// I'm using MBProgressHUD library: https://github.com/jdg/MBProgressHUD#readme
self.progressHUD = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
self.progressHUD.labelText = @"Loading";
self.progressHUD.mode = MBProgressHUDModeIndeterminate;
self.progressHUD.dimBackground = YES;
// Launch the action to the server
[Actions loginWithEmail:[self.textEmail.text lowercaseString] andPassword:pass success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
if ([Actions requestFailed:JSON]) {
LOG(@"ERROR %@ / %@ / %@ \n", pass, request, response, JSON);
if ([JSON[@"MSG"] isEqualToString:@"USER_NOT_REGISTERED"]) {
self.progressHUD.labelText = @"User doesn't exist";
self.textEmail.text = @"";
self.textPassword.text = @"";
} else if ([JSON[@"MSG"] isEqualToString:@"PASSWORD_INCORRECT"]) {
self.progressHUD.labelText = @"Wrong password";
self.textPassword.text = @"";
}
[self.progressHUD hide:YES afterDelay:[Utils hudDuration]];
return;
}
// If everything went OK, go to this function to save user data
// and perform segue to home screen (or dismiss modal login view)
[self onLoginSuccessWithPassword:pass JSON:JSON response:response];
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
// If something fails, display an error message
LOG(@"ERROR:(%@): %@ / %@ / %@ / %@ \n", pass, request, response, error, JSON);
self.progressHUD.labelText = @"Something went wrong, try again";
[self.progressHUD hide:YES afterDelay:[Utils hudDuration]];
return;
}];
}
关于iphone - AFnetworking waitUntilFinish 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14066441/
有没有人设法通过 AFNetworking 使服务器发送事件 (SSE) 正常工作?我知道 AFURLConnectionOperation 有一个可以附加到的 inputStream 属性,但是 A
在我使用 AFNetworking 发出网络请求之前,有没有办法取消所有网络请求(由另一种方法启动的请求) 我试过如下但不起作用: - (void)sendRequest:(NSUInteger)pa
我同时有一些请求,我想处理直到全部完成。以下是要求: [self getProfileData]; [self checkNewSystemMessage]; [self checkChatMessa
我需要执行一系列按顺序运行的服务器调用,并且只有在所有先前的请求都成功时才能执行一个请求。 所以,我的想法是为每个请求创建一个 AFHTTPRequestOperation 并使用 [myAFHTTP
我正在尝试将 AFNetworking 添加到我的项目中,但我认为我的静态库之一正在使用此框架。我的问题是我该怎么做(将 AFNetworking 添加到我的项目中,最好是不使用 pods)以及我如何
我正在尝试上传一个 NSData,它是使用 AFNetwork 的图像,但出了点问题,我找不到我的错误所在 这是我的代码: NSData *imageData = UIImageJPEGReprese
使用AFNetworking 2.0的应用程序遇到以下问题。 使用AFHTTPRequestOperationManager的GET方法时,出现错误NSURLErrorDomain code -101
你能帮我理解如何使用 UIActivityIndicatorView+AFNetworking 或 UIProgressView+AFNetworking 吗?我是否需要再创建一个 UIViewC
我一直在寻找新的 AFNetworking 2.0 的示例来上传图像。 但是我碰壁了,无法弄清楚代码有什么问题。 所以这是我使用的代码 NSData *imageData = UIImageJPEGR
寻找如何使用 AFHTTPClient 发布 json 的示例.我看到有一个 postPath 方法需要一个 NSDictionary并且 AFJSONEncode 方法返回一个 NSData .是否
在我的项目中,我有 RestKit 和 IDMPhotoBrowser(使用 Cocoapods),所以两个版本 AFNetworking 之间存在冲突。您知道如何在同一个项目中同时使用它们吗? 最佳
我正在尝试为 UIButton 集成 AFNetworking 类(我正在调用配置文件页面并加载异步用户的头像)。 https://gist.github.com/dpettigrew/2925847
我正在尝试将一个项目从 AFNetworking 1.3 迁移到 AFNetworking 2.0。 在 AFNetworking 1.3 项目中,我有以下代码: - (void) downloadJ
我正在使用 AFNetworking 2.0 & 新版本。成功尝试了几个示例 WS 调用。我们已经实现了 Web 服务并被称为: 它的数据参数是加密后的字符串。 请求是:http://demo.XYZ
我正在尝试使用 AFHTTPClient 方法“postPath”将一个参数键的多个值传递给 HTTP 请求。但是,参数变量是 NSDictionary,因此我无法为我的关键“电子邮件”设置多个值。我
当我想停止使用 AFNetworking 构建的同步引擎中的所有当前请求时,我真的遇到了问题。 我有 5 个不同的 URL 可以查询。如果前一个查询被正确执行,则每个查询都会启动。 这非常有效。 我想
我正在制作一个应用程序,它将从网络服务中获取图片资源和文本。我选择了很棒的 AFNetworking 的 UIImageView+AFNetworking 类别来处理图像下载的东西。 但是,我面临着内
我在使用 AFNetworking 时遇到问题代码: #import "SyncProfile.h" #import "AFNetworking.h" @implementation SyncProf
我使用 AFNetworking 作为我的 iPhone 应用程序的网络层,该应用程序连接到使用 Devise 进行身份验证的 Rails 服务器。如果我登录(通过 POST 调用)提供用户名/密码,
iOS 版 AFNetworking 是否提供了缓存失败请求(例如由于没有互联网连接)并在互联网连接恢复时自动重试请求的解决方案。 谢谢,多林 最佳答案 请参阅Network Reachability
我是一名优秀的程序员,十分优秀!