无法在 Java 中对经过身份验证的 Hyperledger Composer rest 服务器发出发布请求



我无法对经过身份验证的作曲家休息服务器发出 POST 请求。

  • 我一直在尝试使用Hyperledger作曲家休息服务器已启用身份验证和多用户。
  • 我已经通过导出启用了基于 Github 的身份验证 COMPOSER_PROVIDERS变量和多用户模式,带钱包和 身份。
  • 我在 github 中对休息服务器进行身份验证,我可以做休息 作曲家招摇资源管理器中的操作
  • 我还能够通过传递 带有access_token的网址。http://localhost:4200/api/Trader?access_token=xxxxxxxxxxx .这行得通 在邮差也是如此。

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

它给我的只是

Server returned HTTP response code: 401

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

我不知道我是否错过了什么,因为我能够从邮递员那里做休息操作。我从邮递员本身获取代码格式并将其粘贴到 Java 代码中,但它仍然不起作用.我不知道我做错了什么,

建议,代码片段?

谢谢!

既然你设法从Postman运行它,那么你显然在你的Java代码中缺少一些东西。

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

检查您的 Postman 请求并将其完全复制到您的 Java 代码中,而不仅仅是 URL。

记录您的请求并将其与邮递员进行比较,以确切地了解差异是什么。

尝试以下代码来检索 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

最新更新