2012-06-05 1 views
1

이 API를 이해할 수 없습니다. ,자바에서 새로운 freebase api (API 검색)를 사용하는 방법은 무엇입니까?

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

그리고 다음 : 나는 (받는다는) 구글-API-서비스 - 유리 염기를 다운로드하여이 코드하려고 노력했다 테스트 :

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

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

지금 내가이 작업을 수행 할 수를 json 출력을 파싱하고 싶습니다.

제발, freebase 객체에서이 메소드는 어디에 있습니까? freebase.mqlreadfreebase.text을 볼 수 있지만 API SEARCH (http://wiki.freebase.com/wiki/ApiSearch)와 비슷한 방법은 찾을 수 없습니다.

답변

4

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 라이브러리를 사용합니다.

3

감사합니다.

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")); 
      } 
     }   
} 
: 여기

내 코드입니다