为啥我登陆的时候老是显示网络连接超时?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥我登陆的时候老是显示网络连接超时?相关的知识,希望对你有一定的参考价值。
您好,感谢您对拉卡拉的关注与支持。网络连接异常,可尝试以下方法进行解决:
(1)确认网络是否连接
(2)检查网络连线、端口是否插紧
(3)机器进行重启
(4)如果是手机网络,请确认手机是否欠费
(5)重新进行网络设置,更换接入点
如果未能解决,则需要与拉卡拉客服取得联系,或与相关网络管理部门取得联系。
拉卡拉客服热线:400-766-6666
拉卡拉祝您生活愉快! 参考技术A
确认网络是否连接。
检查网络连线、端口是否插紧。
重新进行网络设置,更换接入点。
传输设备的原因:运营商机房和传输介质(线路)单位的责任。
交换方面的原因:运营商机房的责任。
终端方面的原因:终端的原因属于用户的责任;用户必须保证自己设备完好。
传输的问题主要是拓宽频带,降低误码率;终端和交换的问题主要是提高网络交换机的处理速度。就上述三方面的技术而言,有很多工作要做的。是一项技术性很强繁杂的工作,需要个专业共同配合。
网络连接超时可能的原因有:1.网络断开,不过经常显示无法连接2.网络阻塞,导致你不能在程序默认等待时间内得到回复数据包3.网络不稳定,网络无法完整传送服务器信息4.系统问题,系统资源过低,无法为程序提供足够的资源处理服务器信息
为啥没有网络连接时 Alamofire 需要这么长时间才能超时?
【中文标题】为啥没有网络连接时 Alamofire 需要这么长时间才能超时?【英文标题】:Why is Alamofire taking so long to timeout when there is no network connection?为什么没有网络连接时 Alamofire 需要这么长时间才能超时? 【发布时间】:2017-01-19 21:40:51 【问题描述】:我正在使用 Swift 3.0
和 Alamofire 4
。我正在使用单例网络类向服务器发出API
请求。当没有互联网时,Alamofire 需要大约 30 秒来完成关闭并运行故障处理程序。这是我的代码:
func performRequest(_ url:String,completionHandler:@escaping (_ Success:Bool,AnyObject?) -> Void)
Alamofire.request(url).validate().responseJSON response in
if response.result.isSuccess //Request was successful
self.errorCount = 0
completionHandler(true,response.result.value as AnyObject?)
else
print("failure occured")
self.setNoInternetDialogAppear()
我也尝试使用此代码设置超时,但没有效果:
`Alamofire.SessionManager.default.session.configuration.timeoutIntervalForRequest = 2000`
我最近从 Swift 2.2 和 Alamofire 3 迁移了我的代码,并且从那以后才开始这样做。 TIA
【问题讨论】:
您必须在创建会话之前设置waitsForConnectivity
标志。会话获取配置的副本,因此之后更改它对创建的会话没有影响。
【参考方案1】:
var alamoFireManager = Alamofire.SessionManager.default
self.alamoFireManager.session.configuration.timeoutIntervalForRequest = 2000
....
self.alamoFireManager.request(...)
使用变量有效。
【讨论】:
谢谢。刚刚尝试过,但仍然遇到长时间超时。 看来超时正好是 60 秒。我已将“打印”方法与输出的时间放在一起。 奇怪!我正在使用这种精确的方法: pod 'AlamofireDomain', '4.1' 抱歉,希望我能进一步帮助您。【参考方案2】:最好在发出 alamofire 请求之前测试网络连接。试试这个功能。
class func isConnectedToNetwork() -> Bool
var zeroAddress = sockaddr_in()
zeroAddress.sin_len = UInt8(MemoryLayout<sockaddr_in>.size)
zeroAddress.sin_family = sa_family_t(AF_INET)
guard let defaultRouteReachability = withUnsafePointer(to: &zeroAddress,
$0.withMemoryRebound(to: sockaddr.self, capacity: 1)
SCNetworkReachabilityCreateWithAddress(nil, $0)
) else
return false
var flags: SCNetworkReachabilityFlags = []
if !SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags)
return false
let isReachable = flags.contains(.reachable)
let needsConnection = flags.contains(.connectionRequired)
return (isReachable && !needsConnection)
【讨论】:
【参考方案3】:我仍在尝试理解为什么 Alamofire 在没有互联网的情况下需要这么长时间才能完成请求,但如果您只想更改超时间隔,可以使用 URLSessionConfiguration 对象。
Alamofire 5+ Swift 5+init(interceptor: RequestInterceptor)
let configuration = URLSessionConfiguration.default
configuration.httpAdditionalHeaders = HTTPHeaders.default.dictionary
configuration.timeoutIntervalForRequest = 15
self.session = Session(configuration: configuration, interceptor: interceptor)
【讨论】:
以上是关于为啥我登陆的时候老是显示网络连接超时?的主要内容,如果未能解决你的问题,请参考以下文章