Worklight Java 适配器调用另一个适配器获取 I/O 问题
Worklight Java adapter invoke another adapter get I/O issue
我在尝试从 Java 适配器调用适配器 (HTTP/MYSQL) 时遇到问题。
当我使用 Postmen 测试它时(在 header 上添加了授权)
总是遇到 IO 问题:
[I O: Invalid token on line 1, column 14]
.
首先,我猜应该是OAuth的问题,我在class处添加了@OAuthSecurity(enabled=false)
,但是没有用。
能不能帮我看看是哪里出了问题
代码片段:
DataAccessService service = WorklightBundles.getInstance()
.getDataAccessService();
ProcedureQName name = new ProcedureQName("mysqlAdapter",
"getMysqlAdapters");
String para = ""; // String para = "['a','b','c']";
InvocationResult mysql= service.invokeProcedure(name, para);
JSONObject jsMysql = mysql.toJSON();
//String rst = jsMysql.get("key").toString();
PS 当我在 Postman 上测试时,以下代码片段有效:
HttpUriRequest request = api.getAdaptersAPI()
.createJavascriptAdapterRequest("mysqlAdapter", "getMysqlAdapters");
try {
HttpResponse response = api.getAdaptersAPI().executeAdapterRequest(request);
JSONObject jsonObj =api.getAdaptersAPI().getResponseAsJSON(response);
return jsonObj.toString();
}
catch (MFPServerOAuthException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
return "error";
我很困惑...
您使用了标签 "worklight",但是 Product Worklight 4.x-6.2 没有 Java 适配器支持。有 Java 脚本适配器支持和 Java 脚本适配器调用服务器上的 Java 代码的能力。还可以从 Java 代码调用 JavaScript 适配器 - 但不要混淆为 Java 适配器。
Java 适配器只存在于 MobileFirst Platform Foundation 7.0(以前称为 "Worklight", 标签是 "mobilefirst")。我提到这一点是因为您提到了 OAuth 支持,它是在 MobileFirst Platform Foundation 7.0 中与 Java 适配器一起引入的。但这与您的任何代码片段都无关。 Java 适配器看起来不像那样。
所以,
- 如果您使用的是 Worklight,则不能使用任何 OAuth 内容。
- 如果您使用的是 MobileFirst,则根本不应以这种方式调用适配器。请查看 Java 适配器教程并首先创建一个合适的 Java 适配器:https://developer.ibm.com/mobilefirstplatform/documentation/getting-started-7-0/server-side-development/adapter-framework-overview/
另请注意,此时从 JavaScript 适配器调用 Java 适配器并不容易(与您的请求相反的方式,如果要正确理解的话) .
我在尝试从 Java 适配器调用适配器 (HTTP/MYSQL) 时遇到问题。
当我使用 Postmen 测试它时(在 header 上添加了授权) 总是遇到 IO 问题:
[I O: Invalid token on line 1, column 14]
.
首先,我猜应该是OAuth的问题,我在class处添加了@OAuthSecurity(enabled=false)
,但是没有用。
能不能帮我看看是哪里出了问题
代码片段:
DataAccessService service = WorklightBundles.getInstance()
.getDataAccessService();
ProcedureQName name = new ProcedureQName("mysqlAdapter",
"getMysqlAdapters");
String para = ""; // String para = "['a','b','c']";
InvocationResult mysql= service.invokeProcedure(name, para);
JSONObject jsMysql = mysql.toJSON();
//String rst = jsMysql.get("key").toString();
PS 当我在 Postman 上测试时,以下代码片段有效:
HttpUriRequest request = api.getAdaptersAPI()
.createJavascriptAdapterRequest("mysqlAdapter", "getMysqlAdapters");
try {
HttpResponse response = api.getAdaptersAPI().executeAdapterRequest(request);
JSONObject jsonObj =api.getAdaptersAPI().getResponseAsJSON(response);
return jsonObj.toString();
}
catch (MFPServerOAuthException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
return "error";
我很困惑...
您使用了标签 "worklight",但是 Product Worklight 4.x-6.2 没有 Java 适配器支持。有 Java 脚本适配器支持和 Java 脚本适配器调用服务器上的 Java 代码的能力。还可以从 Java 代码调用 JavaScript 适配器 - 但不要混淆为 Java 适配器。
Java 适配器只存在于 MobileFirst Platform Foundation 7.0(以前称为 "Worklight", 标签是 "mobilefirst")。我提到这一点是因为您提到了 OAuth 支持,它是在 MobileFirst Platform Foundation 7.0 中与 Java 适配器一起引入的。但这与您的任何代码片段都无关。 Java 适配器看起来不像那样。
所以,
- 如果您使用的是 Worklight,则不能使用任何 OAuth 内容。
- 如果您使用的是 MobileFirst,则根本不应以这种方式调用适配器。请查看 Java 适配器教程并首先创建一个合适的 Java 适配器:https://developer.ibm.com/mobilefirstplatform/documentation/getting-started-7-0/server-side-development/adapter-framework-overview/
另请注意,此时从 JavaScript 适配器调用 Java 适配器并不容易(与您的请求相反的方式,如果要正确理解的话) .