无法对 Java 中经过身份验证的 Hyperledger Composer 剩余服务器发出 post 请求
Not able to do a post request to an authenticated Hyperledger Composer rest server in Java
我无法向经过身份验证的 Composer rest 服务器发出 POST 请求。
- 我一直在试用 Hyperledger composer rest 服务器
已启用身份验证和多用户。
- 我已通过导出启用基于 Github 的身份验证
COMPOSER_PROVIDERS 带有电子钱包的变量和多用户模式
身份 .
- 我在 github 中验证了其余服务器,我可以进行休息
Composer Swagger 浏览器中的操作 .
- 我也可以通过传递
url 与 access_token .
http://localhost:4200/api/Trader?access_token=xxxxxxxxxxx 。这行得通
在 Postman 中也是如此。
问题是 我无法从 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
我无法向经过身份验证的 Composer rest 服务器发出 POST 请求。
- 我一直在试用 Hyperledger composer rest 服务器 已启用身份验证和多用户。
- 我已通过导出启用基于 Github 的身份验证 COMPOSER_PROVIDERS 带有电子钱包的变量和多用户模式 身份 .
- 我在 github 中验证了其余服务器,我可以进行休息 Composer Swagger 浏览器中的操作 .
- 我也可以通过传递 url 与 access_token . http://localhost:4200/api/Trader?access_token=xxxxxxxxxxx 。这行得通 在 Postman 中也是如此。
问题是 我无法从 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