【问题标题】:How to use new freebase api (api search) in java?如何在 java 中使用新的 freebase api(api 搜索)?
【发布时间】:2012-06-05 10:30:10
【问题描述】:

我无法理解这个 API。我已经下载(maven)google-api-services-freebase 并测试我尝试执行此代码:

 JsonHttpRequestInitializer initializer = 
        new GoogleKeyInitializer("MY KEY");
                                 HttpTransport httpTransport = new NetHttpTransport();
                                 JsonFactory jsonFactory = new JacksonFactory();

 Freebase freebase = 
          Freebase.builder(httpTransport,   
          jsonFactory).setJsonHttpRequestInitializer(initializer).build();

现在我想这样做:

https://www.googleapis.com/freebase/v1/search?query=cardiff&lang=en&type=university

接下来,我要解析 json 输出。

请问,freebase 对象中的 this 方法在哪里?我看到 freebase.mqlreadfreebase.text 但我找不到任何类似于 API SEARCH (http://wiki.freebase.com/wiki/ApiSearch) 的方法。

【问题讨论】:

    标签: java freebase


    【解决方案1】:

    很遗憾,Java API 客户端还不支持 Freebase Search。以下是使用 Apache HttpClient 进行搜索的方法。

    HttpClient httpclient = new DefaultHttpClient();
    JSONParser parser = new JSONParser();
    
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("query", "Blue Bottle"));
    params.add(new BasicNameValuePair("key", API_KEY));
    
    String serviceURL = "https://www.googleapis.com/freebase/v1/search";
    String url = serviceURL + "?" + URLEncodedUtils.format(params, "UTF-8");      
    HttpResponse httpResponse = httpclient.execute(new HttpGet(url));
    JSONObject response = (JSONObject)parser.parse(EntityUtils.toString(httpResponse.getEntity()));
    JSONArray results = (JSONArray)response.get("result");
    
    for (Object result : results) {
      System.out.println(JsonPath.read(result,"$.name").toString());
    }
    

    此代码还使用json-simplejson-path 库。

    【讨论】:

      【解决方案2】:

      谢谢。

      这是我的代码:

      import com.google.gson.*;
      import org.apache.http.*;
      
      //...
      
      public static void searchTest(String query, String key, String params) throws IOException
      {        
             String query_envelope = "{\"query\":" + query + "}";
             String service_url = "https://www.googleapis.com/freebase/v1/search";      
      
             String url = service_url    + "?query=" + URLEncoder.encode(query, "UTF-8")
                                          + params 
                                          + "&key=" + key;     
      
             HttpClient httpclient = new DefaultHttpClient();   
             HttpResponse response = httpclient.execute(new HttpGet(url));  
      
             JsonParser parser = new JsonParser();
             JsonObject json_data = 
             (JsonObject)parser.parse(EntityUtils.toString(response.getEntity()));
             JsonArray results = (JsonArray)json_data.get("result");            
      
             if(results != null)
             {
                 for (Object planet : results) 
                 {
                    System.out.println(((JsonObject)planet).get("name"));
                 }
             }        
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-08
        • 1970-01-01
        • 2017-12-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多