[英]How to use new freebase api (api search) in java?
I cant understand this API. 我无法理解此API。 I have downloaded (maven) google-api-services-freebase and to test I have tried to do this code:
我已经下载(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();
Now i want to do this: 现在我要这样做:
https://www.googleapis.com/freebase/v1/search?query=cardiff&lang=en&type=university https://www.googleapis.com/freebase/v1/search?query=cardiff&lang=zh-CN&type=university
And next, I want to parse the json output. 接下来,我想解析json输出。
Please, where is the method to this in freebase object?. 请问,freebase对象中该方法在哪里? I see freebase.mqlread and freebase.text but i cant find any method similar for API SEARCH (http://wiki.freebase.com/wiki/ApiSearch).
我看到了freebase.mqlread和freebase.text,但找不到与API SEARCH(http://wiki.freebase.com/wiki/ApiSearch)类似的任何方法。
Unfortunately, the Java API Client doesn't support Freebase Search yet. 不幸的是,Java API客户端尚不支持Freebase Search。 Here's how to do a search using Apache HttpClient instead.
以下是使用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());
}
This code also uses the json-simple and json-path libraries. 此代码还使用json-simple和json-path库。
Thank you. 谢谢。
Here is my code: 这是我的代码:
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"));
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.