无法对 Java 中经过身份验证的 Hyperledger Composer 剩余服务器发出 post 请求

Not able to do a post request to an authenticated Hyperledger Composer rest server in Java

我无法向经过身份验证的 Composer rest 服务器发出 POST 请求。

问题是 我无法从 java 代码 向 composer-rest URL 发出 post 请求,即使在通过后也是如此访问令牌作为参数。我试过 OKHttpClient,Apache HTTPClient, java.net client , CloseableHTTPClient 。

它给我的只是

Server returned HTTP response code: 401

在所有方法中我都得到一个 "AUTHORIZATION FAILURE" 错误。

我不知道我是否遗漏了什么,因为我可以从 Postman 进行休息操作。我从 Postman 本身获取代码格式并将其粘贴到 Java 代码中,但它仍然不起作用。我不知道我做错了什么,

建议,代码片段?

谢谢!

既然你设法从 Postman 那里得到了这个 运行 那么你显然在你的 java 代码中遗漏了一些东西。

您的 URL 可能是正确的,但可能缺少 header 或 json 类型或类似的东西。

检查您的 Postman 请求并在您的 java 代码中准确复制它,所有内容,而不仅仅是 URL。

记录您的请求并将其与 Postman 请求进行比较,以了解究竟有何不同。

尝试使用此代码检索 cookie:

public void getCookieUsingCookieHandler() { 
try {       
    // Instantiate CookieManager;
    // make sure to set CookiePolicy
    CookieManager manager = new CookieManager();
    manager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
    CookieHandler.setDefault(manager);

    // get content from URLConnection;
    // cookies are set by web site
    URL url = new URL("http://host.example.com");
    URLConnection connection = url.openConnection();
    connection.getContent();

    // get cookies from underlying
    // CookieStore
    CookieStore cookieJar =  manager.getCookieStore();
    List <HttpCookie> cookies =
        cookieJar.getCookies();
    for (HttpCookie cookie : cookies) {
            if (cookie.getName().equalsIgnoreCase("access_token")) {
                System.out.println("CookieHandler retrieved cookie: " + cookie.getValue());
                break;
            }

        }
} catch(Exception e) {
    System.out.println("Unable to get cookie using CookieHandler");
    e.printStackTrace();
}

}

您可以从这里参考:https://docs.oracle.com/javase/tutorial/deployment/doingMoreWithRIA/accessingCookies.html