无法向Java中经过身份验证的Hyperledger Composer休息服务器发出发布请求

时间:2018-08-21 10:01:49

标签: java rest authentication hyperledger hyperledger-composer

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

  • 我一直在尝试使用Hyperledger composer rest服务器 启用身份验证和多用户。
  • 我已经通过导出启用了基于Github的身份验证 COMPOSER_PROVIDERS变量和多用户模式以及电子钱包和 身份。
  • 我在github上验证了其余服务器,并且我能够进行休息 Composer Swagger资源管理器中的操作
  • 我也可以通过传递Postman中的其余操作 带有access_token的网址。 http://localhost:4200/api/Trader?access_token=xxxxxxxxxxx。这有效 在邮递员中也是如此。

问题是即使将访问令牌作为参数传递后,我也无法从Java代码向作曲家休息URL发出发布请求。我尝试使用OKHttpClient,Apache HTTPClient,java.net客户端,CloseableHTTPClient。

给我的就是

Server returned HTTP response code: 401

在所有方法中,我都会收到“授权失败”错误。

我不知道我是否有任何遗漏,因为我能够从Postman进行休息手术。我从Postman本身获取代码格式,并将其粘贴到Java代码中,但仍然无法正常工作。我不知道我在做什么错,

建议,代码段?

谢谢!

2 个答案:

答案 0 :(得分:2)

由于您设法从Postman运行此程序,因此您显然在Java代码中缺少了某些内容。

您可能具有正确的URL,但可能缺少标头,json类型或类似的东西。

检查您的邮递员请求,然后将其准确复制到您的Java代码中,而不只是URL中。

保留您的请求日志,并将其与邮递员进行比较,以确切地了解两者之间的区别。

答案 1 :(得分:2)

尝试以下代码以获取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