問題タブ [if-none-match]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Etags の使用時に Okhttp がキャッシュされた応答を返さない
サーバーがリクエストのEtagIf-None-Match
を返し、その etag が後続のすべての URL リクエストにヘッダー (つまり) として追加されるという単純な使用例があります。サーバーは200
、応答に変更がある場合、または304
それ以外の場合に応答できます。後者の場合、キャッシュからの応答を再利用することは理にかなっています。ただし、okhttp は常にnull
キャッシュされた応答として返されます。
トラブルシューティングを行ったところ、応答は okhttp によって内部的にディスクに書き込まれますが、CachingStrategy
はそれを に返しませんCacheInterceptor
。CachingStrategy
クラスを詳しく調べると、キャッシュが使用されないことを具体的に述べているドキュメントがあります。
この動作を回避し、代わりにキャッシュされた応答を使用する方法はありますか?
(ここで説明されているようにキャッシュを有効にしており、okhttp バージョンを使用しています3.10.0
)
また、奇妙なことに、Etag を手動で追加する必要があります。Okhttp は、それ自体で後続のリクエストに etag を追加できません。
編集- 修正、Okhttp は etag ヘッダーを正しく追加します。後続のリクエストに etag ヘッダーが追加されていることを確認するには、ネットワーク インターセプターと通常のインターセプターを使用する必要がありました。
これらの問題に多少関連しています:
python - Pythonでスクレイピーまたはリクエストでif-none-matchヘッダーを送信する方法は?
Scrapy を使用してサイトをスクレイピングしていますが、API の一部が「if-none-match」ヘッダーなしで JSON データを返していません。
100 を超える API のリストがあるため、有効な JSON ファイルを取得するための自動ヘッダーを生成したいと考えています。誰かがこれを処理する方法を知っているか、それを取り除く他の方法があります。
前もって感謝します。