无法使用GWT应用程序访问freebase

时间:2012-02-17 12:29:32

标签: java json gwt freebase mql

我正在开发一个GWT应用程序来从Freebase获取查询结果。现在我在我的服务实现类中使用以下代码。

import com.freebase.api.Freebase;
import com.freebase.json.JSON;
import com.google.tracker.client.FreebaseService;
import com.google.tracker.client.freebaseapi.Freebase;
import com.google.tracker.client.freebasejson.JSON;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;

public class FreebaseServiceImpl extends RemoteServiceServlet implements FreebaseService{

public String getDirectorName() throws IllegalArgumentException{
    Freebase freebase = Freebase.getFreebase();
    String query_str = "{" +
            "'id':   null," +
            "'type': '/film/film'," +
            "'name': 'Blade Runner'," +
            "'directed_by': [{" +
            "'id':   null," +
            "'name': null" +
            "}]" +
            "}​".replace('\'', '"');

    JSON query = new JSON(query_str);
    JSON result = freebase.mqlread(query);
    @SuppressWarnings("unused")
    String director = result.get("result").get("directed_by").get(0).get("name").string();
        return director;
    }
}

我在运行应用程序时遇到以下错误:

500服务器上的呼叫失败;有关详细信息,请参阅服务器日志。

这些可能的原因是什么?

2 个答案:

答案 0 :(得分:1)

该代码甚至无法编译,因为您的导入名称冲突(重复Freebase,JSON)。你甚至可以在开始之前解决这个问题。

据我所知,谷歌没有使用com.google.tracker命名空间的任何内容。如果那是this question中的代码,则应将包名更改为您控制的名称空间中的内容。

您正在使用的客户端库使用已弃用的Freebase API。由于您正在进行新的开发,因此您应该使用新的API。

如果您在修复所有基本内容后仍遇到问题,请更新您的问题或发布新问题。

答案 1 :(得分:0)

您可以使用此客户端库来使用Freebase API

http://code.google.com/p/google-api-java-client/

你从哪里得到你正在使用的图书馆?

此处提供了有关API的文档 - 请注意,您需要使用新的API:

http://wiki.freebase.com/wiki/API