java在调用web服务时出现错误403

java在调用web服务时出现错误403,java,Java,我是java的新手。我调用webservice并通过java得到错误403,但当我通过curl调用时,它工作了。这是我的curl代码 $ curl -v -H "Accept: application/json" -H "Content-type: application/json" \ -X GET https://openapi.etsy.com/v2/categories/jewelry?api_key={api_key} 以下是Java代码: try {

我是java的新手。我调用webservice并通过java得到错误403,但当我通过curl调用时,它工作了。这是我的curl代码

$ curl -v -H "Accept: application/json" -H "Content-type: application/json" \
       -X GET  https://openapi.etsy.com/v2/categories/jewelry?api_key={api_key}
以下是Java代码:

try {

        URL url = new URL("https://openapi.etsy.com/v2/listings/active?api_key={api_key}");
        System.out.println(url.toString());
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");
        conn.setDoOutput(true);
        conn.setRequestProperty("Content-Type", "application/json");
        //conn.setRequestProperty("charset", "utf-8");
        conn.setRequestProperty("Accept", "application/json");  

        if (conn.getResponseCode() != 200) {
            throw new RuntimeException("Failed : HTTP error code : "
                    + conn.getResponseCode());
        }

        BufferedReader br = new BufferedReader(new InputStreamReader(
            (conn.getInputStream())));

        String output;
        System.out.println("Output from Server .... \n");
        while ((output = br.readLine()) != null) {
            System.out.println(output);
        }

        conn.disconnect();

      } catch (MalformedURLException e) {

        e.printStackTrace();

      } catch (IOException e) {

        e.printStackTrace();

      }

403表示禁止的行为


我的猜测是,使用该web服务需要身份验证,而您的代码中没有提供该服务。

web服务器可能会返回403禁止的HTTP状态码,以响应客户端对网页或资源的请求,以指示可以访问服务器并理解该请求,但拒绝采取任何进一步的操作。状态代码403响应是web服务器被配置为出于某种原因拒绝客户端对请求的资源的访问的结果。阅读api,确保您在提出请求时没有遗漏任何内容。我也用HttpsURLConnection尝试了这篇文章,但不起作用

您尝试过HttpsURLConnection吗?我尝试过HttpsURLConnection,但返回的403错误与此问题相同,你们能解决这个问题吗?那么为什么curl请求得到了正确的响应,而我们提供了用于身份验证的api密钥