在我看来,这两种方法(URIBuilder.removeQuery
和URIBuilder.clearParameters
)完全相同,所以我不确定为什么有两种选择。我应该在什么情况下使用其中一个?
我注意到相应的URIBuilder.setQuery
方法已被标记为已弃用,而有利于URIBuilder.setParameters
,但URIBuilder.removeQuery
不是。dev mailing list。我错误地认为也许应该是这样吗?
更新 Oleg在{{3}}上提供了以下解释:
#setQuery方法弃用的原因是它的不一致 它与该类所有其他方法的合同。预期#setQuery 输入是URL编码而所有其他方法都是未转义的 输入。选择是在改变方法的合同和之间 这样做几乎打破了每一个依赖的应用程序 URIBuilder或方法弃用有利于另一种方法 名字稍微不那么直观。所以,应该使用[set | clear | add]参数[s]方法使用查询参数和#setCustomQueury 设置自定义查询的方法。
答案 0 :(得分:2)
嗯,如果你查看来源,确切的差异非常小:
public URIBuilder removeQuery() {
this.queryParams = null;
this.query = null; // <- this is the only difference
this.encodedQuery = null;
this.encodedSchemeSpecificPart = null;
return this;
}
vs
public URIBuilder clearParameters() {
this.queryParams = null;
this.encodedQuery = null;
this.encodedSchemeSpecificPart = null;
return this;
}
因此,clearParameters
将保留您的查询对象。