RQLを使用するAPI(Jersey with OAuth v1)と通信するAndroidアプリがあります。これはRetrofit 2ライブラリを使用して行います。
フェッチしたデータを制限するには、制限(制限、オフセット)パラメータがURLに追加されます。 Retrofitでは空のパラメータをURLに追加できないため、これは簡単ではありませんでした。
たとえば、これは私のベースURL:api.acme.com/v1
で、これはユーザーエンドポイント:api.acme.com/v1/users
です。しかし、返されるユーザーの数を制限する場合は、api.acme.com/users?limit(10,2)
を使用します。
Retrofitで署名に空のパラメータを追加
値のない変数名パラメータを追加するオプションがなかったので、エラーを返しませんでした唯一の方法はそうのようなURLを生成することでした:
@GET Call<UserList> getUsers (@Url String path);
と、このURLを渡すためには、 :返すhttp://api.acme.com/users?limit(10,2)
エラーがOAuthの署名を生成するときに、空のパラメータはURLに追加されないためである{"error":1,"error_name":"OAUTH_SIGNATURE_EXCEPTION","error_message":"The OAuth signature is invalid"}
あります。郵便配達員はこれらの空のパラメータをシグネチャに追加するオプションがありますが、Retrofitでこのオプションが見つからないようです。何か案は ?私のURLに空のパラメータを追加するための他のオプションも、いつでも歓迎です! 私はすでにMap、Paths、Queryで試していますが、結果はありません。
「空のパラメータがURLに追加されていません」とはどういう意味ですか? – Emma
Webサービスを管理できますか? – nasch
@Emmaこの場合の空のパラメータは "limit(10,2)"(値のないキー)です。OAuthシグネチャの生成では、空のパラメータは追加されません。郵便配達員にはこれらを追加するオプションがありますが、私はこのオプションをレトロフィットで見つけることができません – Reyske