Как мне обойти эту ошибку HTTP GET 404 в java?

Я использую Apache HTTPClient 4.2и пытаюсь создать Запрос Google Places API, но возникают проблемы.

Вот простой фрагмент, иллюстрирующий проблему:

  //Web API related
  String apiKey = "API_KEY"; 
  //search params
  String location = "51.527277,-0.128625";//lat,lon
  int rad = 500;
  String types = "food";
  String name  = "pret";

  String getURL = "/maps/api/place/search/json?location="+location+"&radius="+rad+"&types="+types+"&name="+name+"&sensor=false&key="+apiKey;
  HttpHost host = new HttpHost("maps.googleapis.com",443,"https");
  HttpGet get = new HttpGet(host.toURI() + getURL);
  System.out.println("using getRequestLine(): " + get.getRequestLine());
  System.out.println("using getURI(): " + get.getURI().toString());

  DefaultHttpClient httpClient = new DefaultHttpClient(new ThreadSafeClientConnManager());
  try {
      HttpResponse response = httpClient.execute(get);
      System.out.println("response: " + response.getStatusLine().toString());
  } catch (Exception e) {
      System.err.println("HttpClient: An error occurred- ");
      e.printStackTrace();
  }   

Этот вывод выглядит примерно так (за исключением API_KEY, конечно):

using getRequestLine(): GET https://maps.googleapis.com:443/maps/api/place/search/json?location=51.527277,-0.128625&radius=500&types=food&name=pret&sensor=false&key=API_KEY HTTP/1.1
using getURI(): https://maps.googleapis.com:443/maps/api/place/search/json?location=51.527277,-0.128625&radius=500&types=food&name=pret&sensor=false&key=API_KEY
response: HTTP/1.1 404 Not Found

Все это немного озадачивает, потому что:

  1. Я у меня нет большого опыта работы с вызовами HTTP REST
  2. Если я попробую использовать URL-адрес getRequestLine() в Простом расширении клиента REST для Chrome, я получу статус 200 с данными, выглядящими следующим образом:

    { "html_атрибуции": [], "Результаты" : [], "статус": "ЗАПРОС_ОТКЛОНЕН" }

но если я использую версию getURI(), она работает нормально.

Я не уверен, что проблема в том, что "HTTP/1.1" добавляется, или в чем-то другом. Это правильный способ сделать запрос API Google Places из Java?

5
задан George Profenza 10 June 2012 в 00:57
поделиться