Android 调用Parse cloud函数时json响应错误

Android 调用Parse cloud函数时json响应错误,android,parse-platform,android-studio,parse-cloud-code,Android,Parse Platform,Android Studio,Parse Cloud Code,我已经使用Parse的REST API很长一段时间了,但是现在为了减少对Parse服务器的请求量,我已经开始探索云代码的功能,这些功能看起来相当不错——基于我目前阅读的内容。在Parse的服务器上定义并运行一些业务逻辑看起来是一个非常强大的工具 然而,我甚至还没有能够启动和运行基本功能。我遵循了这一点,但是当我试图在后台调用“hello”函数时,我被卡住了。以下是我所做的: 将jar文件导入Android Studio项目 安装Parse的powershell命令工具 在本地创建了一个云代码目录

我已经使用Parse的REST API很长一段时间了,但是现在为了减少对Parse服务器的请求量,我已经开始探索云代码的功能,这些功能看起来相当不错——基于我目前阅读的内容。在Parse的服务器上定义并运行一些业务逻辑看起来是一个非常强大的工具

然而,我甚至还没有能够启动和运行基本功能。我遵循了这一点,但是当我试图在后台调用“hello”函数时,我被卡住了。以下是我所做的:

  • 将jar文件导入Android Studio项目
  • 安装Parse的powershell命令工具
  • 在本地创建了一个云代码目录。默认情况下,它在“main.js”中创建
    hello
    函数
  • 部署它
  • 通过调用此
    hello
    函数在我的Android应用程序上运行测试,但它无法解析响应
  • 以下是错误的堆栈跟踪:

    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!");
    });
    
    这就是我使用Android的Parse SDK调用函数的方式

    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);
                }
            }
    });
    
    stringclientid=ctx.getString(R.String.parse\u app\u id);
    String clientKey=ctx.getString(R.String.parse\u app\u api\u key);
    Map Map=newhashmap();
    初始化(ctx、clientId、clientKey);
    ParseCloud.callFunctionInBackground(“你好”,映射,新函数回调(){
    公共void done(字符串o,异常parsee){
    如果(e!=null){
    Utils.LogError(e);
    }
    否则{
    Utils.Log(“ParseCloud.hello:+o”);
    }
    }
    });
    
    ctx
    变量是“Context”类的一个实例,
    Utils
    它只是一个助手类,我在启用调试时使用它将使用信息打印到LogCat


    我在他们的旧论坛网站和专门的谷歌群组上都找不到太多的信息。如果有人在任何帮助之前遇到这个问题,我将非常感谢使用Android Studio,我正在使用
    编译'com.parse:parse Android:1.+'

    直到昨天天气还很好。在各种各样的尝试之后,我发现将其更改为
    compile'com.parse:parse-android:1.12
    摆脱了这个错误。所以检查您的库参考

    而不是“你好,世界!”,您是否尝试过以json格式返回数据?我的第一个猜测是,它正在尝试解析json,但失败了。你能发布json响应吗?@chris谢谢你的评论。是的,这也是我的第一个猜测。我尝试向
    response.success
    函数传递一个普通json对象和一个“字符串化”json对象。我还尝试在java代码中将回调的泛型类型从字符串更改为JSONObject,但没有成功。
    o
    参数总是出现
    null
    @hareshchelana如果您查看
    FunctionCallback
    类,则无法获得完整响应。我的一些用户也会遇到类似的问题。来自Parse的响应为null。尽管在解析控制台上检查日志,但响应看起来与其他所有请求一样正常,没有错误,我们已经测试了云代码,但一些用户面临一个问题。这似乎是解析Android SDK中的一个bug。有人跟Parse开发者谈过吗?