如何通过Parse4J连接到托管的Parse-Server? [英] How can I connect to a hosted Parse-Server over Parse4J?

查看:99
本文介绍了如何通过Parse4J连接到托管的Parse-Server?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望能够使用Parse4J库( https://github.com/thiagolocatelli/parse4j/)以连接到托管的Parse-Server.我想使用 https://parseapi.back4app.com 作为API端点.他们提供了可靠的Parse托管解决方案.

I would like to be able to use the Parse4J library (https://github.com/thiagolocatelli/parse4j/) to connect to a hosted Parse-Server. I want to use https://parseapi.back4app.com as an API endpoint. They provide a solid Parse hosting solution.

代码:

import org.parse4j.Parse;
import org.parse4j.ParseException;
import org.parse4j.ParseObject;
import org.parse4j.ParseQuery;
import org.parse4j.callback.GetCallback;

/**
 * Created by Martin on 3/27/2017.
 */
public class Parse4JStarter {

    public static void main(String[] args) {

        Parse.initialize("applicationId","restAPIKey");

        if (Parse.getApplicationId() != null) {
            System.out.println("ParseConnection successful! " + Parse.getApplicationId());

            try {
                queryPost();
            } catch (ParseException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    private static void queryPost() throws Exception {
        ParseQuery<ParseObject> query = ParseQuery.getQuery("Post");
        query.getInBackground("4tD9TIIIhv", new GetCallback<ParseObject>() {
            public void done(ParseObject object, ParseException e) {
                if (e == null) {
                    System.out.println("ParseObject printed successfully! " + object);
                } else {
                    e.printStackTrace();
                }
            }
        });
    }
}

依赖项:

<dependencies>
        <dependency>
            <groupId>com.github.thiagolocatelli</groupId>
            <artifactId>parse4j</artifactId>
            <version>1.4</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.5</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.6.4</version>
        </dependency>
    </dependencies>

我尝试通过提供本地版本(即1.4-FIXED)并将ParseConstants.java中的API_ENDPOINT值更改为指向https://parseapi.back4app.com来覆盖Maven存储库,这是托管数据库的位置:

I tried overriding the Maven repository by supplying a local version, i.e. 1.4-FIXED and changing the API_ENDPOINT value in ParseConstants.java to point to https://parseapi.back4app.com, which is where my database is hosted:

public class ParseConstants {

    public static final String API_ENDPOINT = "https://parseapi.back4app.com";
    public static final String API_VERSION = "1";

    public static final String HEADER_CONTENT_TYPE = "Content-Type";
    public static final String HEADER_APPLICATION_ID = "X-Parse-Application-Id";
    public static final String HEADER_REST_API_KEY = "X-Parse-REST-API-Key";
    public static final String HEADER_MASTER_KEY = "X-Parse-Master-Key";
    public static final String HEADER_SESSION_TOKEN = "X-Parse-Session-Token";

    public static final String CONTENT_TYPE_JSON = "application/json";

    public static final String FIELD_OBJECT_ID = "objectId";
    public static final String FIELD_CREATED_AT = "createdAt";
    public static final String FIELD_UPDATED_AT = "updatedAt";
    public static final String FIELD_SESSION_TOKEN = "sessionToken";


    public static int MAX_PARSE_FILE_SIZE = 10485760;

}

我收到了ParseException:

I received an ParseException:

ParseException [code=109, error=unauthorized]
    at org.parse4j.command.ParseResponse.getParseError(ParseResponse.java:122)
    at org.parse4j.command.ParseResponse.getException(ParseResponse.java:78)
    at org.parse4j.ParseQuery.find(ParseQuery.java:598)
    at org.parse4j.ParseQuery.find(ParseQuery.java:469)
    at org.parse4j.ParseQuery.get(ParseQuery.java:377)
    at org.parse4j.ParseQuery$GetInBackgroundThread.run(ParseQuery.java:452)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

这意味着我的连接未正确初始化:

This means that my connection was not properly initialized:

   /**
   * You must call Parse.initialize before using the Parse library.
   */
  public static final int NOT_INITIALIZED = 109;

通过更彻底地研究Parse4J库,我可以做更多的事情.但是,在这一点上,我迷路了.我该怎么办?

There is probably more that I can do by investigating the Parse4J library more thoroughly. At this point, however, I'm lost. What can I do?

推荐答案

感谢Parse4J的开发人员,我能够通过将依赖关系更新为最新的快照版本1.5-SNAPSHOT然后将初始化方法更新为包含保存自定义API端点的第三个参数.大约8个月前可能会发生这种情况,但是文档尚未提及使用最新版本的情况,因为它不是正式版本.我使用 https://parseapi.back4app.com 进行了这项工作.他们提供了可靠的Parse托管解决方案,但是您可以使用自己的URI替换它.我认为应该有一个新版本...

Thanks to the developers at Parse4J, I was able to solve my problem by updating my dependency to the latest snapshot version 1.5-SNAPSHOT and then updating my initialization method to include a third parameter that holds the custom API endpoint. This was possible some 8 months ago but the documentation does not mention anything about using the latest build, since it's not an official release yet. I got this working using https://parseapi.back4app.com. They provide a solid Parse hosting solution but you can replace this with your own URI. A new release should be around the corner I assume...

<dependencies>
        <dependency>
            <groupId>com.github.thiagolocatelli</groupId>
            <artifactId>parse4j</artifactId>
            <version>1.5-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.5</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.6.4</version>
        </dependency>
    </dependencies>

初始化方法:

Parse.initialize(applicationId, restAPIKey, "https://parseapi.back4app.com");

在此处查看文档: https://github.com/thiagolocatelli/parse4j/commit/4113b422631c364488bc542152

这篇关于如何通过Parse4J连接到托管的Parse-Server?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆