問題タブ [retrofit]
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 - Retrofit を使用して非同期コールバックから String または JSONObject を返すにはどうすればよいですか?
たとえば、
原因:
POJOへのgson解析を無効にする必要があると思いますが、その方法がわかりません。
android - Retrofit-Androidでリクエストとレスポンスの本文をログに記録する方法は?
完全な要求/応答本文をログに記録するための関連するメソッドが Retrofit API に見つかりません。プロファイラーで何らかの助けが得られることを期待していました (ただし、応答に関するメタデータのみが提供されます)。ビルダーでログレベルを設定しようとしましたが、これも役に立ちません:
編集: このコードは現在機能しています。なぜそれが以前に機能しなかったのかわかりません。おそらく、古いバージョンのレトロフィットを使用していたためです。
android - いつRxJava Observableを使用する必要があり、いつAndroidで単純なコールバックを使用する必要がありますか?
アプリのネットワーキングに取り組んでいます。そこで、Square のRetrofitを試してみることにしました。彼らはシンプルをサポートしていることがわかりますCallback
そしてRxJavaのObservable
どちらも一見するとよく似ていますが、実装すると面白くなります...
単純なコールバックの実装では、次のようになります。
これは非常に単純で簡単です。そして、Observable
すぐに冗長になり、非常に複雑になります。
それだけではありません。あなたはまだ次のようなことをしなければなりません:
ここで何か不足していますか?Observable
または、これはsを使用するのに間違ったケースですか? Observable
単純なコールバックよりも優先する/する必要があるのはいつですか?
アップデート
@Niels が彼の回答または Jake Wharton のサンプル プロジェクトU2020で示したように、レトロフィットの使用は上記の例よりもはるかに簡単です。しかし、基本的に質問は同じままです - いつどちらの方法を使用する必要がありますか?
android - Retrofit を使用して複数の同じ/配列パラメータを追加する方法は?
複数の同じ名前のパラメーターをサーバー (データの配列) に渡す必要があるインスタンスがあります。
それを変更することは不可能です。
RetroFit でこれを達成するにはどうすればよいですか? 値のマップを渡すことができるようですが、キーがすべて同一であるため、それは役に立ちません。
どんな助けでも素晴らしいでしょう...きれいな方法/回避策があることを本当に望んでいます。さもなければ、別のAPIライブラリを使用してプロジェクトのリファクタリングを行う必要があります。
android - Retrofit を使用して JSON を解析できません
Retrofitを使用して API をヒットしています。Json とヘッダーの両方の応答を取得する必要があります。だから私のインターフェースメソッドはこのようなものです。したがって、応答タイプのオブジェクトでは、から応答ヘッダーを取得しresponse.getHeaders()
ます。しかし、からjson応答を取得しようとするとresponse.getBody()
、適切な応答が得られません。Response オブジェクトから json 応答を取得して解析するのに助けが必要です :-(
android - Android Retrofit GET リクエストの ConversionException の問題
Retrofit を使用して REST リクエストを作成し、対応するモデル オブジェクトを作成しています (gson で @SerializedName アノテーションを使用)。ただし、ConversionException が発生する特定の GET リクエストが 1 つありますが、その原因を突き止めるのに苦労しています。さまざまなパラメーターを使用して、ほぼ同時に 10 ~ 20 の同様の GET 要求を行い、それらの約 90% が正しく返されます。残りは ConversionException で失敗します。
retrofit.converter.ConversionException: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: BEGIN_OBJECT が必要でしたが、行 1 列 1 で STRING でした
この変換例外が発生すると、(アプリを強制終了せずに) その要求を再度実行しようとすると、常に同じ変換例外が発生します。アプリを強制終了して完全に新しく起動すると、おそらく機能します。
この変換例外が発生したリクエストについて、ブラウザーで json レスポンスを調べてみましたが、常に正しいように見えます。「失敗した」リクエストと成功したリクエストを何度も比較しましたが、json は同じように見えます。
私の質問:
1) 私が知る限り、応答データは常に正しいのに、これらの変換例外が発生するのはなぜですか?
2) レトロフィットは GET リクエストに対して何らかのキャッシングを行いますか? これは、アプリケーションを強制終了して再起動するまで、失敗したリクエストの再リクエストが失敗し続ける理由を説明している可能性があります。
ありがとう!
android - レトロフィットで別のリクエストを透過的に送信することで特定のエラーを処理する
これが私が処理しようとしているケースです。
- リクエストが実行され、レスポンスが認証トークンの有効期限が切れていることを示している場合、
- リフレッシュ トークン リクエストを送信する
- リフレッシュ トークン リクエストが成功した場合は、元のリクエストを再試行します。
これは、呼び出し元のアクティビティ、フラグメントなどに対して透過的である必要があります。呼び出し元の観点からは、1 つの要求と 1 つの応答です。
OkHttpClient を直接使用して以前にこのフローを達成したことがありますが、Retrofit でこれを達成する方法がわかりません。
おそらく、ResponseInterceptor に関するこの未解決の問題に関連するものでしょうか?
レトロフィットでこれを達成する簡単な方法がない場合、それを実装する最良の方法は何ですか? ベースリスナークラス?
そのような場合に役立つ場合は、RoboSpice with Retrofit も使用しています。