2015-12-29 2 views
1

Я пытаюсь ударить по URL-адресу и получить ответ от моего Java-кода.Ответ HTTP-соединения HTTP

Я использую URLConnection для получения ответа. И написав этот ответ в html-файле.

При открытии этого html в браузере после выполнения класса java, я получаю только домашнюю страницу Google, а не результаты.

Что случилось с моим кодом, мой код здесь,

FileWriter fWriter = null; 
    BufferedWriter writer = null; 

    URL url = new URL("https://www.google.co.in/?gfe_rd=cr&ei=aS-BVpPGDOiK8Qea4aKIAw&gws_rd=ssl#q=google+post+request+from+java"); 
    byte[] encodedBytes = Base64.encodeBase64("root:pass".getBytes()); 
    String encoding = new String(encodedBytes); 
    HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
    connection.setRequestMethod("GET"); 
    connection.setRequestProperty("User-Agent", "Mozilla/5.0"); 
    connection.setRequestProperty("Accept-Charset", "UTF-8"); 
    connection.setDoInput(true);   
    connection.setRequestProperty("Authorization", "Basic " + encoding); 
    connection.connect(); 

    InputStream content = (InputStream) connection.getInputStream(); 
    BufferedReader in = new BufferedReader(new InputStreamReader(content)); 
    String line; 

    try { 
     fWriter = new FileWriter(new File("f:\\fileName.html")); 
     writer = new BufferedWriter(fWriter); 
     while ((line = in.readLine()) != null) { 
      String s = line.toString(); 
      writer.write(s); 
      } 
    writer.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

То же код работает пару дней назад, но не сейчас.

ответ

1

Этот метод поиска не рекомендуется, как ожидается, должен потерпеть неудачу, вы должны использовать google search APIs для такого рода работ.

Примечание: Google использует некоторое перенаправление и использует токен, поэтому, даже если вы найдете умный способ справиться с этим, он должен потерпеть неудачу в долгосрочной перспективе.

Edit:

Это пример того, как с помощью API-интерфейсов поиска Google вы можете получить работу в надежном способе; пожалуйста, обратитесь к source за дополнительной информацией.

public static void main(String[] args) throws Exception { 
    String google = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q="; 
    String search = "stackoverflow"; 
    String charset = "UTF-8"; 

    URL url = new URL(google + URLEncoder.encode(search, charset)); 
    Reader reader = new InputStreamReader(url.openStream(), charset); 
    GoogleResults results = new Gson().fromJson(reader, GoogleResults.class); 

    // Show title and URL of 1st result. 
    System.out.println(results.getResponseData().getResults().get(0).getTitle()); 
    System.out.println(results.getResponseData().getResults().get(0).getUrl()); 
} 
+0

Это возвращает итоговую страницу как ответ два дня назад, но не сейчас. –

+0

@ user4120936 смотрите ** Примечание ** ... пояснение ... пояснение. – anand

+0

можете ли вы предложить какой-то URL-адрес для получения этой работы? используя google api –

1

Причина в том, что этот URL-адрес не возвращает результаты поиска. Вы должны понять рабочий процесс Google, чтобы понять это. Откройте этот URL-адрес в своем браузере и просмотрите его источник. Вы увидите только много javascript.

Фактически, в краткой сводке, google использует запросы Ajax для обработки поисковых запросов.

Для выполнения требуемой задачи вам нужно либо использовать безгласный браузер (жесткий путь), который может выполнять javascript/ajax, либо лучше использовать google search api по указанию anand.

+0

Это возвращает результирующую страницу как ответ два дня назад, но не сейчас. –

+0

@ user4120936 такой же адрес использовался? – Tariq

+0

Да Тарик ...... –