【问题标题】:Any idea why this request works at curl and not in java?知道为什么这个请求适用于 curl 而不是 java 吗?
【发布时间】:2020-01-20 07:45:25
【问题描述】:

我正在尝试将 woocommerce APi 与 java 一起使用,但它返回 403。当我通过 curl 尝试相同的请求时,它工作正常。

已经尝试添加/删除请求属性

Java 类:

public static void main (String [] args){
    String CONSUMER_KEY="consumer_key";
    String CONSUMER_SECRET="consumer_secret";
    String authString = CONSUMER_KEY + ":" + CONSUMER_SECRET;
    byte[] authEncBytes = Base64.encodeBase64(authString.getBytes());
    String authStringEnc = new String(authEncBytes);
    HttpURLConnection conn;
    try {
        String url ="https://example.com/wp-json/wc/v3/products";
        URL url1 = new URL(url);
        conn = (HttpURLConnection) url1.openConnection();
        conn.setRequestMethod("GET");
        conn.setRequestProperty("Authorization","Basic "+authStringEnc);
        conn.setRequestProperty("header","content-type:application/json");
        conn.setRequestProperty("Accept", "*/*");
        conn.setDoOutput(true);
        conn.setDoInput(true);
        conn.setInstanceFollowRedirects(false);
        InputStream is = conn.getInputStream();
        byte[] bytes = IOUtils.toByteArray(is);
        String response= GzipUtil.unzip(bytes);
    }
    catch (Exception e){

    }

}

卷曲请求:

卷曲https://example.com/wp-json/wc/v3/products\ -u {consumer_key}:{consumer_secret}

知道如何解决这个问题吗?谢谢

【问题讨论】:

  • 会抛出什么异常?错误是什么?你想解决什么问题?
  • 响应码是 403。预期的响应码是 200。所以问题是即使我提供了正确的凭据,响应也不是预期的。 curl 完成的相同请求有效。

标签: java api curl woocommerce


【解决方案1】:

某些服务器希望请求中存在 User-Agent 标头,以将其视为有效请求。那么您可以尝试将其添加到您的请求中吗?

conn.setRequestProperty("User-Agent", "My-User-Agent");

【讨论】:

  • 感谢您的回答。奇怪的是我之前尝试过,但没有成功,(可能是因为我尝试了很多用户代理),现在我尝试了 Mozilla/5.0,它成功了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-24
  • 1970-01-01
  • 2020-09-28
  • 1970-01-01
  • 1970-01-01
  • 2012-06-23
  • 1970-01-01
相关资源
最近更新 更多