私はこの機能を持っています
@GET("/users?filters[0][field]={param}&filters[0][operator]=equals&filters[0][value]={value}")
UserDto retrieveUsersByFilters(@Path("param") String nameFilter, @Path("value") String value);
私はそれを次のように呼び出そうとします:
UserDto currentUser = interfaceUser.retrieveUsersByFilters(User.LOGIN, login);
しかし、私はエラーがあります:
retrofit.RetrofitError:InterfaceUser.retrieveUsersByFilters:URLクエリ文字列 "filters [0] [field] = {param}&filters [0] [operator] = equals&filters [0] [value] = {value}"に置換ブロックがあってはなりません。
私はすでにFirefoxでURLをテストしており、正常に動作します。
ご回答ありがとうございます
編集する
解決:
@GET("/users?filters[0][operator]=equals")
UserDto retrieveUsersByFilters(
@Query("filters[0][field]") String nameFilter,
@Query("filters[0][value]") String value);
クエリパラメータには、URLに自動的に追加される独自の注釈があります。
@GET("/users?filters[0][operator]=equals")
UserDto retrieveUsersByFilters(
@Query("filters[0][field]") String nameFilter,
@Query("filters[0][value]") String value);
its Javadoc で@Query
の詳細を読むことができます
URL="/api-mobile_prateek2.php?method=getProductById&pid="
@GET("/api-mobile_prateek2.php?method=getProductById")
Call<Product> responseproduct(@Query("pid") String pid);
@GETにpidを入れないでください、@ Queryを使用してRetrofitが自動的にURLを修正します
パスに直接値を入れないでください。ただし、メソッドシグネチャで優先してください。完全にはわかりませんが、次のようなことを試してください:
@GET("/users?filters[0][operator]=equals")
UserDto retrieveUsersByFilters(@Path("filters[0][field]") String nameFilter, @Path("filters[0][value]") String value);
JavaDoc から:
例1:
@GET("/friends")
Call<ResponseBody> friends(@Query("page") int page);
Foo.friends(1)で呼び出すと、/ friends?page = 1が生成されます。 nullの例:
例2:
@GET("/friends")
Call<ResponseBody> friends(@Query("group") String group);
Foo.friends(null)で呼び出すと、/ friendsが生成されます。配列/変数の例:
例3:
@GET("/friends")
Call<ResponseBody> friends(@Query("group") String... groups);
Foo.friends( "coworker"、 "bowling")で呼び出すと、/ friends?group = coworker&group = bowlingが生成されます。パラメータの名前と値は、デフォルトでURLエンコードされています。この動作を変更するには、encoded = trueを指定します。
例4:
@GET("/friends")
Call<ResponseBody> friends(@Query(value="group", encoded=true) String group);
Foo.friends( "foo + bar"))で呼び出すと、/ friends?group = foo + barが生成されます。