如何解决wc-api-java 无法使用前后参数获取 woocommerce 订单
我想获得特定日期的订单,但遇到以下错误尝试了多个日期格式但得到相同的错误。这仅在我添加日期参数(之前和之后)时发生。这个 api 适用于 per_page 或没有任何参数。
WooCommerce wooCommerce = new WooCommerceAPI(config,ApiVersionType.V3);
Map<String,String> params = new HashMap<>();
params.put("per_page","10");
params.put("after","2016-11-20T13:57:31.2311892-04:00");
params.put("before","2017-11-20T13:57:31.2311892-04:00");
List<Map<String,Object>> orders = wooCommerce.getAll(EndpointBaseType.ORDERS.getValue(),params);
这段代码给了我一个错误 线程“main”java.lang.RuntimeException 中的异常:无法解析检索到的对象:{code=woocommerce_rest_authentication_error,message=Invalid signature - 提供的签名不匹配。,data={status=401}}
解决方法
我得到了日期问题的解决方案,这就是解决方案。我们需要对日期进行编码。
params.put("after",percentEncode("01-01-2021T00:00:00"));
public String percentEncode(String s) {
final String UTF_8 = "UTF-8";
try {
return URLEncoder.encode(s,UTF_8)
// OAuth encodes some characters differently:
.replace(SpecialSymbol.PLUS.getPlain(),SpecialSymbol.PLUS.getEncoded())
.replace(SpecialSymbol.STAR.getPlain(),SpecialSymbol.STAR.getEncoded())
.replace(SpecialSymbol.TILDE.getEncoded(),SpecialSymbol.TILDE.getPlain());
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e.getMessage(),e);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。