我正在使用 ASIFormDataRequest 将一些数据发布到经过 http 身份验证的 url。
当身份验证失败并调用身份验证对话框委托时,上传进度似乎仍在完全进行。
所以在这些情况下:
1) 用户的凭据尚未存储在钥匙串中 2) 存储在钥匙串中的用户凭据未通过身份验证(过期等)
我看到这种行为:
- 我看到请求进入我的服务器,并且 401 denied 错误返回给客户端
- 不调用 uploadFailed 委托。
- 进度条代表缓慢填充,因为文件似乎仍在网络连接上推出。它在与完全上传的时间一致的时间内完成
- 出现内置身份验证对话框模式
- 用户输入正确的凭据
- 进度条委托重置
- 上传再次开始 - 进度条在服务器上接收到发布数据时填充
- 按预期调用完成的委托方法。
- 第二次尝试一切都上传得很好
这是我设置操作的地方:
[self setRequest:[ASIFormDataRequest requestWithURL:uploadURL]];
[request setDelegate:self];
[request setDidFailSelector:@selector(uploadFailed:)];
[request setDidFinishSelector:@selector(uploadFinished:)];
[request setUseKeychainPersistence:TRUE];
[request setShouldPresentAuthenticationDialog:TRUE];
[request setShouldPresentCredentialsBeforeChallenge:TRUE];
[request setPostValue:captionTextField.text forKey:@"caption"];
[request setPostValue:[siteID stringValue] forKey:@"site_id"];
[request setFile:fileToUpload forKey:@"site_photo"];
[request setUploadProgressDelegate:progressView];
[request startAsynchronous];
我想我需要在身份验证失败时发出[请求取消],但我不确定我应该在哪里执行此操作。
即使在服务器返回 401 之后,POST 仍然会消失,这是预期的行为吗?
感谢任何指导或指向解决此问题的现有问题。