3

私は Android アプリを構築しており、短期間のネットワーク呼び出しに Square の Retrofit ライブラリを使用しています。私はJavaとAndroidに比較的慣れていません。これまで、次のようなリクエストを作成してきました。

@GET("/library.php")
void library(
        @Query("one_thing") String oneThing,
        @Query("another_thing") String anotherThing,
        Callback<Map<String,Object>> callback
);

そして、それらを次のように呼び出しました:

    service.library(oneThing, anotherThing, callback);

可変数のパラメーターを受け入れるリクエストを実装する必要があります。10 程度までです。それらを個別に定義してnull、特定の要求に存在しないものに渡すか何かをしなければならないのは面倒です。変数またはパラメータを受け入れ@Query、パラメータ ディクショナリ/マップ内の各要素に対して s を自動構築するように、リクエストのインターフェイスを定義する方法はありますか? このようなもの:

@GET("/library.php")
void library(
        Map<String,Object> parameters,
        Callback<Map<String,Object>> callback
);

service.library(parameters, callback);

ヒントをお寄せいただきありがとうございます。

編集:この場合、リクエストに関係のないパラメーターに null を渡すことはできません。理想的には@Query、パラメータ ディクショナリに基づいて sを設定/作成し@Queryて、値が null の場合にキーが にならないようにすることができます。

編集:特にGETリクエストで動作するソリューションを探しています。

4

2 に答える 2

3

この例のように、代わりにパラメーターを HTTP 本文としていつでも渡すことができます(注: 私は作成者です)。

しかし、あなたが提案するように、代わりにあなたの値で Map を使用してください。

@POST("/library.php")
public void library(@Body Map<String, Object> parameters, Callback<Map<String,Object>> callback);
于 2013-07-18T22:55:24.200 に答える