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

Java调用Discogs新增listing接口报422错误提示release_id类型无效

排查方向
  • 接口规则适配校验:Discogs的POST /marketplace/listings接口要求所有业务参数必须放在application/json格式的请求体中,不支持从URL查询参数提取参数。你当前代码把所有参数拼接到URL后,请求体为空,接口读取不到release_id字段,就会返回“期望integer类型”的语义错误。你之前的GET请求正常是因为GET接口的参数确实需要放在URL查询串中,和POST接口的参数传递规则不同。
  • 请求结构校验:你已经正确设置了content-type: application/json请求头,但调用post方法时没有传入任何请求体内容,相当于提交了空的JSON结构,所有必填字段均缺失。
  • 参数类型校验:你代码中定义的release_id为int类型,本身类型符合接口要求,不存在类型错误问题。
解决方案

按以下步骤修正代码即可:

  1. 构造符合要求的JSON请求体,把所有参数放到JSON对象中,不要拼接在URL后面:
// 用你项目中常用的JSON工具类即可,此处以fastjson为例
import com.alibaba.fastjson.JSONObject;

JSONObject requestBody = new JSONObject();
requestBody.put("release_id", product.getRelease_id()); // int类型,符合接口要求
requestBody.put("condition", product.getCondition());
requestBody.put("sleeve_condition", product.getSleeveCondition());
requestBody.put("price", product.getPrice());
requestBody.put("status", "Mint");
// 其他可选参数按需添加
  1. 修正POST请求调用逻辑,把构造好的JSON作为请求体传入post方法,同时修正错误的请求头配置:
// 接口地址不要带查询参数,使用纯地址:https://api.discogs.com/marketplace/listings
WebResource webResource = initRest(restUrl);
ClientResponse resp = webResource.type("application/json")
        .header("Authorization", "Discogs token=" + token)
        // 修正请求头:Discogs要求必须传递User-Agent头,你之前把头名写错了
        .header("User-Agent", "JTLSyncTool/0.1 (+https://#####)")
        // 传入请求体内容
        .post(ClientResponse.class, requestBody.toJSONString());

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 01:45:01