Alamofireを使用すると、完全なファイルをダウンロードする前にヘッダー応答を処理する機能を持つことはできますか?例えばAlamofireはすべてのデータを受信する前にヘッダーを検証します(全身)
:
私たちのアプリは、複数のページに同じ要素を使用しています。これらの要素は、要求を使用して収集されます。各リクエストにはそれぞれ独自のハッシュ(md5チェックサム)があります。私たちはヘッダーでこのハッシュを送信しています&キャッシュシステムでハッシュが認識された場合、要求を中止したいと思います。
実装例
APIManager.sharedManager.request(url, method: method, parameters: parameters)
.doSomethingHere {
//I want to read the headers here, before the data is fetched from the server.
//There needs to be an option here to cancel the request.
}
.responseJSON { response in
//If the request isn't cancel in the function above. The data should be here.
}
}
編集:コードHTTPレスポンスのステータスコードを取得し、それを確認するには、次のソリューション(Alamofire実装SWIFT 3)
APIManager.sharedManager.delegate.dataTaskDidReceiveResponse =
{(session:URLSession, dataTask:URLSessionDataTask, response:URLResponse) -> URLSession.ResponseDisposition in
if let httpResponse = response as? HTTPURLResponse {
//Do something with headers here. If you don't want to continue the request:
return URLSession.ResponseDisposition.cancel
}
return URLSession.ResponseDisposition.allow
}
APIManager.sharedManager.request(url, method: method, parameters: parameters)
.responseJSON { response in
//Response contains no data if it was canceled.
}
}
あなただけが2つの要求を使用して欲しいものを達成することができます。応答ヘッダーは応答自体の一部です。したがって、応答を取得する前にヘッダーを確認するにはどうすればよいですか? –
こんにちはDavid。私のタイトルは間違っていた。私は、応答ヘッダーを検証し、完全な応答本体をダウンロードするかどうかを決定したいと思います。 – Bas
@DávidPásztorによれば、応答の前にヘッダーを取得することはできません。ヘッダーは応答の一部です。 2つの要求を使用するか、サーバー側で処理する必要があります。ヘッダーが検証されていない場合、エラーメッセージまたはステータスコードなどを送信できます(エラーメッセージまたはステータスコードなど) この印刷を使用してすべてのヘッダーを表示できます(response.response?.allHeaderFields) –