在Retrofit中部分HTTP GET参数的占位符?

时间:2018-06-05 16:13:06

标签: java http get annotations retrofit2

尝试在Retrofit2接口方法上构建@Get注释:

 @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具有常量和可变部分。

由于几个原因,不希望每次调用都在外部构建完整的param值。

我只想将journalId替换为提供的String journalId,是否可能?

1 个答案:

答案 0 :(得分:0)

如何定义方法

@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;
    }
}