【问题标题】:wc-api-java not able to get woocommerce orders using before and after paramwc-api-java 无法在参数前后使用 woocommerce 订单
【发布时间】:2021-03-16 20:18:18
【问题描述】:

我想获取特定日期的订单,但尝试了几种日期格式但出现以下错误,但出现相同的错误。这只发生在我添加日期参数(之前和之后)时。此 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);

这段代码给了我一个错误 线程“主”java.lang.RuntimeException 中的异常:无法解析检索到的对象:{code=woocommerce_rest_authentication_error, message=Invalid signature - 提供的签名不匹配。,data={status=401}}

【问题讨论】:

    标签: java api woocommerce get woocommerce-rest-api


    【解决方案1】:

    我得到了日期问题的解决方案,这就是解决方案。我们需要对日期进行编码。

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

    【讨论】:

      【解决方案2】:

      对我来说,仅使用这种格式 2021-07-01T11:51:36 会有所帮助。

      【讨论】:

      • 2021 年 10 月 11 日:我在使用 woocommerece 的参数字段中的日期时仍然遇到问题:获取所有订单调用。 params.put("per_page","10"); params.put("之后","2016-11-20T13:57:31.2311892-04:00");以及帖子中的答案 params.put("after", percentEncode("01-01-2021T00:00:00"));不工作。我收到以下错误:
      • 我收到以下错误:线程“main”中的异常 java.lang.RuntimeException:无法解析检索到的对象:{code=rest_invalid_param, message=Invalid parameter(s): after, data ={status=400, params={after=Invalid date.}, details={after={code=rest_invalid_date, message=Invalid date., data=null}}}} at com.icoderman.woocommerce.DefaultHttpClient.getEntityAndReleaseConnection( DefaultHttpClient.java:127).
      猜你喜欢
      • 2017-04-16
      • 1970-01-01
      • 2017-09-22
      • 1970-01-01
      • 1970-01-01
      • 2017-10-11
      • 1970-01-01
      • 1970-01-01
      • 2021-02-05
      相关资源
      最近更新 更多