1

私は長い間 Parse の REST API を使用してきましたが、Parse のサーバーへのリクエストの量を減らすために、かなり良さそうな Cloud Code 機能の調査を開始しました。遠い。Parse のサーバー上でいくつかのビジネス ロジックを定義して実行するという事実は、非常に強力なツールのように見えます。

しかし、私は基本を立ち上げて実行することさえできていません。この入門ガイドに従いましたが、バックグラウンドで「hello」関数を呼び出そうとすると行き詰まりました。これが私がやったことです:

  1. jar ファイルを Android Studio プロジェクトにインポートしました
  2. Parse の powershell コマンド ツールをインストールする
  3. クラウド コード ディレクトリをローカルに作成しました。デフォルトでは、hello「main.js」に関数を作成します
  4. デプロイした
  5. この関数を呼び出して 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変数は「Context」クラスのインスタンスであり、Utilsこれはデバッグをオンにして使用情報を LogCat に出力するときに使用した単なるヘルパー クラスです。

古いフォーラム サイトでも専用の Google グループでも、多くの情報を見つけることができませんでした。誰かがこの問題に遭遇した場合、助けをいただければ幸いです

4

1 に答える 1

2

私が使用していた Android Studio を使用compile 'com.parse:parse-android:1.+' すると、昨日まではまったく問題ありませんでした。あらゆる種類の多くの試行の後、これを変更してcompile 'com.parse:parse-android:1.12このエラーを取り除くことがわかりました。だからあなたのライブラリ参照をチェックしてください!

于 2016-01-07T08:40:11.657 に答える