Wso2 使用客户端Id/Client Secret/Token连接API Mgr的Java代码

Wso2 使用客户端Id/Client Secret/Token连接API Mgr的Java代码,wso2,wso2-am,Wso2,Wso2 Am,我有一个BE Java服务,它是RESTFul的,移植到WSO2 API管理器上。它已发布并在商店中提供。我已经注册了一个新的应用程序(名为“Java App”),在订阅该API时,它为我提供了客户端密钥和客户端机密以及令牌。使用令牌,我能够成功地访问API(从SOAPUI)。我的要求是从独立的Java应用程序访问API。是否有人可以指导我或提供适当的代码,可以访问已发布的API 你好,斯雷德哈 您可以通过将授权作为HTTP头发送来调用API String url = "API_URL"; H

我有一个BE Java服务,它是RESTFul的,移植到WSO2 API管理器上。它已发布并在商店中提供。我已经注册了一个新的应用程序(名为“Java App”),在订阅该API时,它为我提供了客户端密钥和客户端机密以及令牌。使用令牌,我能够成功地访问API(从SOAPUI)。我的要求是从独立的Java应用程序访问API。是否有人可以指导我或提供适当的代码,可以访问已发布的API

你好,斯雷德哈

您可以通过将
授权
作为HTTP头发送来调用API

String url = "API_URL";

HttpClient client = HttpClientBuilder.create().build();
HttpGet request = new HttpGet(url);

// add Authorization Header header
request.addHeader("Authorization", "Bearer :" + accessToken);
HttpResponse response = client.execute(request);

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

BufferedReader rd = new BufferedReader(
    new InputStreamReader(response.getEntity().getContent()));

StringBuffer result = new StringBuffer();
String line = "";
while ((line = rd.readLine()) != null) {
    result.append(line);
}
为了生成带有用户名、密码和客户机密钥/密码的令牌,您可以使用下面的cURL示例来构建HTTP请求。更多信息可在中找到

curl-k-d“grant_type=password&username=&password=“-H”授权:基本svpzswk2seriqjvlofzlpblvpx2zam2y4ytphbtbisjzvv1y4zkm1fmtgxdnmpzbefdvzhh“-H”内容类型:application/x-www-form-urlencoded”https://localhost:8243/token
您必须对客户机密钥/密码进行base64编码,并将其作为基本授权头发送。

您可以通过将
授权
作为HTTP头发送来调用API

String url = "API_URL";

HttpClient client = HttpClientBuilder.create().build();
HttpGet request = new HttpGet(url);

// add Authorization Header header
request.addHeader("Authorization", "Bearer :" + accessToken);
HttpResponse response = client.execute(request);

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

BufferedReader rd = new BufferedReader(
    new InputStreamReader(response.getEntity().getContent()));

StringBuffer result = new StringBuffer();
String line = "";
while ((line = rd.readLine()) != null) {
    result.append(line);
}
为了生成带有用户名、密码和客户机密钥/密码的令牌,您可以使用下面的cURL示例来构建HTTP请求。更多信息可在中找到

curl-k-d“grant_type=password&username=&password=“-H”授权:基本svpzswk2seriqjvlofzlpblvpx2zam2y4ytphbtbisjzvv1y4zkm1fmtgxdnmpzbefdvzhh“-H”内容类型:application/x-www-form-urlencoded”https://localhost:8243/token

您必须对客户机密钥/密码进行Base64编码,并将其与授权头一起作为Basic发送。

您好,Abhiram,感谢您分享代码片段。我使用了代码,但是遇到了一些SSL问题,这些问题已经解决了。然而,当从代码访问时,我得到了401(未经授权)代码。在API管理器控制台上,填充以下两个日志。1.[2016-06-01 11:20:22918]信息-APIKeyValidator无效OAuth令牌:访问令牌:过期。2.[2016-06-01 11:20:22924]警告-由于凭据无效,APAuthenticationHandler API身份验证失败。请注意,我可以使用相同的令牌从SOAP UI成功命中,也可以从API控制台成功命中。此外,我正在寻找使用客户机密钥/机密获取新令牌然后在access中使用它的代码。如果你也转发这样的代码,那将是一个很大的帮助。日志中说,`accesstoken:expired`,生成一个新的Token,然后再试一次。有两个网关URL,一个是通过HTTPS,另一个是通过HTTP,您需要使用HTTP,否则您需要在客户端设置密钥库/信任库。我发现了问题所在。在发送“Authorization”的值时,我们在代码中发送“Bearer:”。有一个冒号在那里。当我删除并得到一个200响应码。阿比拉姆,如果你也能发送令牌生成码,那将是一个很大的帮助。你好,阿比拉姆,谢谢分享代码片段。我使用了代码,但是遇到了一些SSL问题,这些问题已经解决了。然而,当从代码访问时,我得到了401(未经授权)代码。在API管理器控制台上,填充以下两个日志。1.[2016-06-01 11:20:22918]信息-APIKeyValidator无效OAuth令牌:访问令牌:过期。2.[2016-06-01 11:20:22924]警告-由于凭据无效,APAuthenticationHandler API身份验证失败。请注意,我可以使用相同的令牌从SOAP UI成功命中,也可以从API控制台成功命中。此外,我正在寻找使用客户机密钥/机密获取新令牌然后在access中使用它的代码。如果你也转发这样的代码,那将是一个很大的帮助。日志中说,`accesstoken:expired`,生成一个新的Token,然后再试一次。有两个网关URL,一个是通过HTTPS,另一个是通过HTTP,您需要使用HTTP,否则您需要在客户端设置密钥库/信任库。我发现了问题所在。在发送“Authorization”的值时,我们在代码中发送“Bearer:”。有一个冒号在那里。当我删除并得到一个200响应码。阿比拉姆,如果你也能发送令牌生成码,那将是一个很大的帮助。当做