Код Java для использования API пользовательского поиска Google
Может кто-нибудь поделится некоторыми java-кодами для начала работы с поиском google api's.I в Интернете, но не нашел никакой надлежащей документации или хороших примеров кода. Коды, которые я нашел, похоже, не работают. Я буду благодарю, если кто-нибудь может мне помочь. (Я получил ключ API и пользовательский идентификатор поисковой системы).
Спасибо.
Ответы
Ответ 1
Я изменил while loop
в коде, предоставленном @Zakaria выше. Возможно, это не совсем правильный способ его работы, но он дает вам ссылки на результаты поиска google. Вам просто нужно проанализировать вывод. См. Здесь,
public static void main(String[] args) throws Exception {
String key="YOUR KEY";
String qry="Android";
URL url = new URL(
"https://www.googleapis.com/customsearch/v1?key="+key+ "&cx=013036536707430787589:_pqjad5hr1a&q="+ qry + "&alt=json");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/json");
BufferedReader br = new BufferedReader(new InputStreamReader(
(conn.getInputStream())));
String output;
System.out.println("Output from Server .... \n");
while ((output = br.readLine()) != null) {
if(output.contains("\"link\": \"")){
String link=output.substring(output.indexOf("\"link\": \"")+("\"link\": \"").length(), output.indexOf("\","));
System.out.println(link); //Will print the google search links
}
}
conn.disconnect();
}
Надеюсь, что это сработает и для вас.
Ответ 2
Ну, я думаю, что нет ничего особенного в том смысле, что вы можете использовать Java RESTFUL client.
Я попробовал пользовательский API с помощью этого Java-кода и основываясь на Документация Google:
public static void main(String[] args) throws IOException {
URL url = new URL(
"https://www.googleapis.com/customsearch/v1?key=YOUR-KEY&cx=013036536707430787589:_pqjad5hr1a&q=flowers&alt=json");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/json");
BufferedReader br = new BufferedReader(new InputStreamReader(
(conn.getInputStream())));
String output;
System.out.println("Output from Server .... \n");
while ((output = br.readLine()) != null) {
System.out.println(output);
}
conn.disconnect();
}
Вы должны заменить "YOUR-KEY" на найденную в Консоль API Google.
Ответ 3
Для тех, кому нужен рабочий пример API пользовательского поиска с помощью библиотеки Google, вы можете использовать этот метод:
public static List<Result> search(String keyword){
Customsearch customsearch= null;
try {
customsearch = new Customsearch(new NetHttpTransport(),new JacksonFactory(), new HttpRequestInitializer() {
public void initialize(HttpRequest httpRequest) {
try {
// set connect and read timeouts
httpRequest.setConnectTimeout(HTTP_REQUEST_TIMEOUT);
httpRequest.setReadTimeout(HTTP_REQUEST_TIMEOUT);
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
} catch (Exception e) {
e.printStackTrace();
}
List<Result> resultList=null;
try {
Customsearch.Cse.List list=customsearch.cse().list(keyword);
list.setKey(GOOGLE_API_KEY);
list.setCx(SEARCH_ENGINE_ID);
Search results=list.execute();
resultList=results.getItems();
}
catch ( Exception e) {
e.printStackTrace();
}
return resultList;
}
Этот метод возвращает объект "Список результатов", поэтому вы можете выполнять его итерацию
List<Result> results = new ArrayList<>();
try {
results = search(QUERY);
} catch (Exception e) {
e.printStackTrace();
}
for(Result result : results){
System.out.println(result.getDisplayLink());
System.out.println(result.getTitle());
// all attributes:
System.out.println(result.toString());
}
Как вы заметили, вы должны определить свои пользовательские GOOGLE_API_KEY, SEARCH_ENGINE_ID, QUERY и HTTP_REQUEST_TIMEOUT, то есть
private static final int HTTP_REQUEST_TIMEOUT = 3 * 600000;
Я использую зависимости gradle:
dependencies {
compile 'com.google.apis:google-api-services-customsearch:v1-rev57-1.23.0'
}