2017-05-03 18 views
0

私はMoyaをネットワークリクエスト用の素早いアプリで使用しています。Moyaでレスポンスヘッダーを取得

リクエストを取得し、Moya- Object Mapperを使用して結果をマッピングできます。

以前はalamofireを使用していましたが、投稿の作成、リクエストの取得、および応答ヘッダーの読み方に精通しています。

しかし、私はモヤで同じことができるのか分かりません。

私はドキュメントを読んでいましたが、レスポンスヘッダーの読み取りについては何も言いません。

HTTP認証を行い、応答ヘッダーを読み取る方法を追うことができるサンプルまたはチュートリアルはありますか。また、投稿リクエストを作成し、フィールドパラメータやjson bodyとしてパラメータを送信する方法についても説明します。

私はすでにモヤの例を見てきました。

ご協力いただければ幸いです。ありがとうございました。

答えて

1

モヤのレスポンスヘッダーは現時点ではかなり難しいです。 Moyaコードの不要な古いダウンキャストです。なぜ彼らがそれを落としたのかわからない。

私はそれを指摘して、関連する問題を開いた:これは、私がアクセスを取得するために応答をforcecast私の個人的なコードの例ですMoya header PR

:プルリクエストのおかげでMoya header

そして、いくつかの変更を行いますヘッダに:

class GetTokenRequest { 

    private let requestService = AuthorizedRequest() 

    func request() -> Observable<AuthorizedResult<GetTokenEntityResult>> { 
     return Observable.deferred { [weak self] in 
      guard let wself = self else { 
       return Observable.empty() 
      } 

      let req = wself.requestService.makeRawRequest { userId in 
        let obj = GetTokenEntity(lang: currentLanguage(), userId: userId) 
        return MtxAPI.getToken(obj) 
       } 
       .shareReplay(1) 

      return req.map { result in 
       switch result { 
       case .success(let response): 
        let urlResponse = response.response as! HTTPURLResponse 
        guard let token = urlResponse.allHeaderFields["Token"] as? String else { 
         return AuthorizedResult.fail(RequestError.technical) 
        } 
        return AuthorizedResult.success(GetTokenEntityResult(token: token)) 

       case .fail(let error): return AuthorizedResult.fail(error) 
       } 
      } 
     } 
    } 

} 

私はRxSwiftを使用していますが、メインラインは次のとおりです。

let urlResponse = response.response as! HTTPURLResponse 

あなたは(Moya.Responseある)応答を得るときmapObject/mapArray使用/マップでそれをforcecastこと

私はそれがで実装されたときに知っている、私が作った問題を追跡するためにあなたにお勧めこのbreaking change

ボーナスが含まれています次のリリース:プロジェクトでSwiftLintを使用している場合、あなたはguard/let

guard let resp = response.response as? HTTPURLResponse 
+0

でそれを唱えてもよいありがとうございました!私は追加した後、応答ヘッダを取得することができます、urlResponse = response.responseとして! HTTPURLResponse –

関連する問題