とりあえず以下を参考にしつつ実装でっちあげた。
要件としては
- 認証は digest
- 戻りは XML
という色々な意味でアレなナニ。色々と微妙なのであまり脳は使いたくなかった訳です。
とりあえず Request なクラスの定義が以下。
{% gist 402a9ea071b71afb6639 %}
ポイントとしては
- コンストラクタでカスタムな DigestRetryPolicy を setRetryPolicy している
- XML を parse するので InputStream を戻すカンジ
- getHeaders は認証なヘッダ属性がなければそのまま戻す
- 認証なヘッダ属性があればよしなに処理してくっつけて戻す
- DigestRetryPolicy は retry 二回限定
でしょうか。認証情報がハードコードされちゃってますがご容赦願います。
で、アクセスして parse するあたりは XML 対応なコンテンツそのまんまなので略します。ちなみに API には PUT な操作もあったのですがほぼ同じカンジな実装で正常動作していることを確認してます。
とは言え、動くまでかなり試行錯誤はあったのですがorz