Jak se dostat chybovou zprávu, z reakce těla při použití Alamofire.download() žádost

0

Otázka

AF.download(url, parameters: params, to: destination)
  .validate(statusCode: [200])
  .response { response in
    switch response.result {
    case .success(let url):
      print("ok", url)
    case .failure(let err):
      print(err.localizedDescription)
    }
  }

Při odpovědi serveru nějaký kód chyby, jako je 4xx, 5xx, to bude tisknout "Odpověď kód stavu bylo nepřijatelné: xxx.", ale chci detailní zprávu v reakci těla(server odeslat prostý text, když chyba), jsem četl nějaký příspěvek, který řekl, že můžeme získat odpověď zprávu s "odpověď.data" ale pokud pomocí AF.ke stažení metoda, není už "data" majetku s response objekt(Alamofire.AFDownloadResponse). takže, je tam nějaký způsob, jak to zjistit?

alamofire download message response
2021-11-13 10:19:20
2

Nejlepší odpověď

0

Alamofire je DownloadResponse obsahuje fileURL: URL? majetek, který může být použit k načtení stažený data z disku, i když validace nebo jiné akce, produkovat selhání v důsledku reakce.

2021-11-14 07:52:13

I když je to trochu divné (uložit odpověď do souboru bez ohledu na to, zda stav podaří, nebo ne), ale je to opravdu ten server vrátí zprávu. Děkuji za vaši odpověď.
Thor Qin

To je to, co je ke stažení: přímé stažení na disk dat vrácených serverem. Alamofire by podpora dynamických dat úkolu, ke stažení úkol konverzi, ale to je velmi složité, jen aby se zabránilo jeden disk přečíst.
Jon Shier
0

To je z Alamofire Zdrojový Kód;

Ladění textové reprezentace používá při zapsány do výstupního proudu, který zahrnuje (pokud je k dispozici) shrnutí URLRequestžádost je záhlaví a tělo (pokud dekódovatelný jako String pod 100KB); HTTPURLResponse's status kód, záhlaví a tělo; délka sítě a serializace akcí; a Result serializace.

Odpověď ladění popis má status kód, informace. Takže, odpověď by měla mít status kód, informace.

I když jsem zkontrolovat zdrojový kód, vidím tuto část;

static func description(of response: HTTPURLResponse) -> String {
    """
    [Response]:
        [Status Code]: \(response.statusCode)
        \(DebugDescription.description(for: response.headers).indentingNewlines())
    """
}

Takže, odpověď.stav by měl dát to, co chcete. Hodně štěstí.

2021-11-13 18:59:18

Potřebuji nejen status kód, ale také server vrátil popis, každopádně děkuji za vaši odpověď.
Thor Qin

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ý
..................................................................................................................