【问题标题】:Sonatype Nexus Rest API 401 UnauthorzedSonatype Nexus Rest API 401 未经授权
【发布时间】:2013-11-19 08:31:47
【问题描述】:

我正在尝试使用 Rest API 从 java 的安全关系存储库中获取工件。我收到 401 Unauthorized 作为响应。

我需要做什么才能授权自己?

String url = "http://myNexus.com/service/local/artifact/maven/redirect?r=my-repo&g=my.group&a=my-artifact&v=LATEST";

HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(url);

HttpResponse response = null;

response = client.execute(request);

System.out.println("Response Code : "
       + response.getStatusLine().getStatusCode());

【问题讨论】:

    标签: rest repository nexus sonatype


    【解决方案1】:

    我建议使用 Nexus 客户端库,而不是为 REST API 编写自己的 Java 包装器。更多详细信息和示例链接是in the Nexus book.

    【讨论】:

    • REST 的全部意义在于您独立于库、特定语言和运行时。
    • 这当然是真的。但是,该 URL 从未设计为 REST API,并且不遵循任何 REST 理念。
    • 这个问题的标题明确提到了“REST API”和 Sonatype documents it as REST API as well。所以我不明白你怎么能说这个 URL 从来没有被设计成或遵守 REST API。
    • 这并没有改变它不是传统意义上的 REST API 的事实..您提供的链接也是针对 Nexus 3 的,它是一个完全独立且不同的应用程序.. 它确实有一个 REST API..
    【解决方案2】:

    我用java来模拟GET方法。第三个参数“auth”是基本的http认证示例。
    http://en.wikipedia.org/wiki/Basic_access_authentication
    http://en.wikipedia.org/wiki/BASE64

        public String sendGet(String url, String param, String auth) {
        String result = "";
        BufferedReader in = null;
        try {
            String urlName = url + "?" + param;
            URL realUrl = new URL(urlName);
            URLConnection conn = realUrl.openConnection();
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("user-agent",
                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
            conn.setRequestProperty("Accept", "application/json");
            conn.addRequestProperty("Authorization", "Basic " + auth);
            conn.connect();
            in = new BufferedReader(
                    new InputStreamReader(conn.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        finally {
            try {
                if (in != null) {
                    in.close();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
        return result;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-07
      • 2021-04-13
      • 2017-12-24
      • 2016-02-09
      • 2019-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多