Časový interval není nastaven pro požadavky POST na iOS

0

Otázka

Mám timeOutInterval nastavena na 30 sekund na všechny mé žádosti přes tento kód:

class DefaultAlamofireSession: Alamofire.Session {
    static let shared: DefaultAlamofireSession = {
        let configuration = URLSessionConfiguration.default
        configuration.timeoutIntervalForRequest = 30
        configuration.timeoutIntervalForResource = 30
        return DefaultAlamofireSession(configuration: configuration)
    }()
}

Při testování jsem si všiml, že pouze můj žádosti vypršel časový limit na 30 sekund. Můj POST požadavky jsou stále používáte výchozí interval, který je 60 sekund.

Může někdo vysvětlit proč a případně mi říct, jak můžu udělat, aby požadavky POST také čas na 60 sekund?

Díky moc, Paprika

alamofire ios moya swift
2021-11-19 10:50:39
1

Nejlepší odpověď

0

URLSessionConfiguration.timeoutIntervalForRequest není to, co si myslíte, že to dělá. Z Apple docs:

Tato vlastnost určuje request timeout interval pro všechny úkoly v rámci zasedání na základě této konfigurace. Žádost časový interval určuje, jak dlouho (v sekundách), úkol by měl počkat na další data, aby se dospělo, než to vzdá. Časovač spojené s touto hodnotou je obnovit kdykoli nová data dorazí. Když žádost časovač dosáhne zadaného intervalu, aniž by obdržel nějaké nové údaje, spustí se časový limit.

Tak, že hotel pouze určuje timeout mezi kusy odpověď Data. To je obvykle to, co chcete. Místo toho, chcete nastavit URLRequest.timeoutInterval přímo, což znamená více toho, co chcete.

Pokud se při pokus o připojení žádost zůstává v nečinnosti po dobu delší než je interval časového limitu, žádost se považuje za dočasný. Výchozí časový interval je 60 sekund.

Jak můžete vidět, tento časový limit se vztahuje k připojení pokus, což je to, co většina lidí myslí jako žádost, je časový limit.

Můžete upravit tuto hodnotu v Alamofire použitím RequestAdapter vlastní Session. Nebo, můžete použít requestModifier uzavření, který je k dispozici na různých request* metody.

2021-11-19 18:01:46

Díky moc za vaši odpověď. Mohl byste dát příklad kódu, jak by se používat RequestAdapter nebo requestModifier dělat, že?
paprika

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................