我用的是阿拉莫菲尔4。当我这样做的时候
print(response.debugDescription)
我在控制台里有这样的东西:
[Request]: https://api2.website.com
[Response]: nil
[Data]: 0 bytes
[Result]: FAILURE: Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline." UserInfo={NSUnderlyingError=0x17444ace0 {Error Domain=kCFErrorDomainCFNetwork Code=-1009 "(null)" UserInfo={NSErrorPeerAddressKey=<CFData 0x170490e50 [0x1ab165bb8]>{length = 16, capacity = 16, bytes = 0x100201bb341d1f890000000000000000}, _kCFStreamErrorCodeKey=57, _kCFStreamErrorDomainKey=1}}, NSErrorFailingURLStringKey=https://api2.flowwow.com/api2/client/info/?auth_token=da88d8aa49ff6f8bb4e1&hash=7f38be3f68db39a6d88687505fdb9ba5&partner_id=1004, NSErrorFailingURLKey=https://api2.website.com, _kCFStreamErrorDomainKey=1, _kCFStreamErrorCodeKey=57, NSLocalizedDescription=The Internet connection appears to be offline.}
[Timeline]: Timeline: { "Request Start Time": 510763454.078, "Initial Response Time": 510763455.293, "Request Completed Time": 510763455.293, "Serialization Completed Time": 510763455.297, "Latency": 1.215 secs, "Request Duration": 1.215 secs, "Serialization Duration": 0.005 secs, "Total Duration": 1.220 secs }
我感兴趣的是一条特别的路线:
Error Domain=NSURLErrorDomain Code=-1009
如何获取此代码以便正确处理错误。我尝试了所有我能编出来的组合,但是在任何地方都没有这个代码的痕迹。
阿拉莫菲尔请求样本
let request = Alamofire.request(urlString,
method: method,
parameters: parameters,
encoding: encoding,
headers: defaultHeaders())
/// Response Status code
/// This status code will be the response’s HTTP status code.
request.responseJSON { response in
if let code = response.response?.statusCode {
NSLog(" Received response: \(code) \(HTTPURLResponse.localizedString(forStatusCode: code))")
}
switch response.result {
case .success:
/// Parse data
parseData(rawdata: response.data, completion: completion)
case .failure(let error):
parseFailure(response, error, completion)
}
}
希望这有帮助!!
当您使用Alamofire打电话时,它会返回一个响应,您可以在该响应中检查任何错误。这是一个使用Alamofire处理错误调用的简单示例。
Alamofire.request("https://your.url.com").responseJSON { response in
if (response.result.isSuccess){
//do your json stuff
} else if (response.result.isFailure) {
//Manager your error
switch (response.error!._code){
case NSURLErrorTimedOut:
//Manager your time out error
break
case NSURLErrorNotConnectedToInternet:
//Manager your not connected to internet error
break
default:
//manager your default case
}
}
}
享受:)
更新于2020年4月1日
此代码应该适用于Alamofire 5版本。我还是没检查,让我知道这是否有效
AF.request(route).responseJSON { (response) in
let result = response.result
switch result {
case .success(let value):
print("Success")
// Do something with value
case .failure(let error):
if let underlyingError = error.underlyingError {
if let urlError = underlyingError as? URLError {
switch urlError.code {
case .timedOut:
print("Timed out error")
case .notConnectedToInternet:
print("Not connected")
default:
//Do something
print("Unmanaged error")
}
}
}
}
}
我希望这能奏效:)
问题内容: 像这样的代码: 问题答案: 不适用于我。最好在 Alamofire中 使用这样的代码:
问题内容: Xcode 8 beta 4中的新增功能桥接到Swift 协议类型。处理失败的时,这会影响StoreKit 。您应该检查以确保没有发生错误,因为交易被取消了才知道是否向用户显示错误消息。您可以通过检查错误的完成此操作。但是使用代替,没有定义。我还无法弄清楚如何从中正确获取错误代码。 这在Swift 3的先前版本中有效: 现在是一个not ,不是成员。 问题答案: 在xCode 8和Sw
我正在我的项目中进行登录,我正在使用Alamofire请求(swift 2.0),我总是遇到无法解决的错误。 错误域=NSURLErrorDomain代码=-999“已取消”用户信息=。。。{NSErrorFailingURLKey=…,NSLocalizedDescription=已取消,NSErrorFailingURLStringKey=…} 这是我的密码: 当用户按下按钮时,我在Login
我已经成功地为我的令牌获得了钥匙链,并将其传递给如下所示的AccessTokenAdapter类。超文本传输协议127.0.0.1:8000/api2/projects/?format=json传递为project ectsURL。 但是,从print(error)开始,我的Xcode显示了类似于error Domain=nsurerrordomain Code=-999“cancelled”Us
使用Alamofire 4/Swift 3,您如何区分由于以下原因而失败的请求: 网络连接(主机关闭,无法连接到主机)vs 代码: 我们希望以不同的方式处理每个案件。在后一种情况下,我们要询问回答。(在前一种情况下,我们不知道,因为没有回应)。
大家好,我几个月前安装了premium edition burp。我可以很容易地从我的电脑上拦截web应用程序。但是当我试图从我的Android设备上拦截应用程序时,问题出现了。我很努力地在网上搜索任何可能的解决方案,但都没有效果。当我用手机连接burp并试图访问Http网站时,我总是无法通过代理服务器错误访问。还有,你能告诉我如何拦截来自messenger、Facebook for Androi