You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Coinbase分页接口使用next_uri请求返回Not Found错误如何解决

问题排查结果

根因定位

错误是JAX-RS客户端path()方法的自动URL编码逻辑导致的:

  • 接口返回的next_uri本身已经携带查询参数分隔符?,而path()方法会对传入的所有字符串做URL转义处理,导致?被转义为%3F
  • 服务端最终收到的请求路径是/v2/accounts%3Fstarting_after=ef35df6c-a45b-5858-b755-f12a709cf26e,会把转义后的%3F当成路径的一部分,无法匹配到对应的接口,因此返回404错误。

修复方案

最简便的修改方式是直接拼接完整请求URL传入target()方法,避开path()的自动编码逻辑,修改后的代码如下:

ArrayList<X> results = new ArrayList<>();
String uri = "/v2/accounts";
javax.ws.rs.client.Client client = getClient();
while(uri != null){
   // 直接拼接完整URL,跳过path方法的编码处理
   T response = client.target("https://api.coinbase.com" + uri)
                    .request(MediaType.APPLICATION_JSON).get(responseType);
   results.addAll(response.getData());
   uri = response.getPagination() == null ? null : response.getPagination().getNextUri();
}
return results;

如果需要保留path()的使用,也可以将next_uri拆分为路径部分和查询参数部分,分别调用path()和queryParam()方法传入即可。

内容的提问来源于stack exchange,提问作者antlen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 00:24:03