Заполнитель для части HTTP GET param в Retrofit? - PullRequest
0 голосов
/ 05 июня 2018

Попытка построить аннотацию @Get по методу интерфейса Retrofit2:

 @GET("select?q=DH_PROD_ID:{journalId}")
    Call<PdhResult> getJournal(@Path("journalId") String journalId, Callback<PdhResult> resultCallback);

Этот вариант вызывает ошибку:

URL query string "q=DH_PROD_ID:{journalId}" must not have replace block

И, как вы можете видеть здесь, параметр запроса q имеет константуи переменные части.

По нескольким причинам нежелательно создавать полное значение параметра снаружи для каждого вызова.

Я просто хочу, чтобы journalId был заменен на предоставленный String journalId, возможно ли это

1 Ответ

0 голосов
/ 05 июня 2018

Как насчет определения метода, например

@GET("select")
Call<PdhResult> getJournal(@QueryParam("q") JournalId journalId, Callback<PdhResult> resultCallback)

class JournalId
{
    String id;

    public JournalId(String id)
    {
        if (id == null || !id.startsWith("DH_PROD_ID:"))
        {
            //throw proper exception
        }
        this.id = id.substring("DH_PROD_ID:".length());
    }

    public String getId()
    {
        return id;
    }
}
...