我已经使用 Parse 的 REST API 有一段时间了,但现在为了减少对 Parse 服务器的请求量,我开始探索看起来相当不错的 Cloud Code 功能 - 基于我所读到的内容,所以远的。您在 Parse 的服务器上定义和运行一些业务逻辑这一事实看起来是一个非常强大的工具。
但是,我什至无法启动和运行基础知识。我按照此入门指南进行操作,但在尝试在后台调用“hello”函数时遇到了问题。这是我所做的:
- 将jar文件导入Android Studio项目
- 安装 Parse 的 powershell 命令工具
- 在本地创建了一个云代码目录。默认情况下,它
hello
在“main.js”中创建函数 - 部署它
- 通过调用此函数在我的 Android 应用程序上运行测试,
hello
但它无法解析响应
这是错误的堆栈跟踪:
11-26 08:28:44.499 18299-18299/com.package.appname E/Leo_Debug﹕ Error: bad json response: org.json.JSONException: Value Invalid of type java.lang.String cannot be converted to JSONObject
com.parse.ParseException: bad json response: org.json.JSONException: Value Invalid of type java.lang.String cannot be converted to JSONObject
com.parse.ParseException: bad json response: org.json.JSONException: Value Invalid of type java.lang.String cannot be converted to JSONObject
at com.parse.ParseRequest.connectionFailed(ParseRequest.java:415)
at com.parse.ParseCommand.onResponse(ParseCommand.java:387)
at com.parse.ParseCommand.onResponse(ParseCommand.java:36)
at com.parse.ParseRequest$3.call(ParseRequest.java:295)
at bolts.Task$2.run(Task.java:195)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
这是我正在调用的云代码功能...
Parse.Cloud.define("hello", function(request, response) {
response.success("Hello world!");
});
这就是我使用 Parse SDK for Android 调用函数的方式......
String clientId = ctx.getString(R.string.parse_app_id);
String clientKey = ctx.getString(R.string.parse_app_api_key);
Map<String,Object> map = new HashMap<String, Object>();
Parse.initialize(ctx, clientId, clientKey);
ParseCloud.callFunctionInBackground("hello", map, new FunctionCallback<String>() {
public void done(String o, ParseException e) {
if(e != null) {
Utils.LogError(e);
}
else{
Utils.Log("ParseCloud.hello: " + o);
}
}
});
该ctx
变量是“上下文”类的一个实例,Utils
它只是我在打开调试时用于将使用信息打印到 LogCat 时使用的辅助类。
我在他们的旧论坛站点和他们专用的 Google 网上论坛上都找不到太多信息。如果有人在任何帮助之前遇到这个问题,将不胜感激