Http URL-соединение для получения данных Android
Это дает ошибку
Error:(57, 16) error: cannot find symbol class HttpResponseException
Я реализовал этот код, но большинство библиотек устарели и не могут найти никакого решения.
Доступен ли обновленный код для получения сведений о месте с помощью Google API.
Код приведен ниже:
public class GooglePlaces
{
private static final HttpTransport HTTP_TRANSPORT=new NetHttpTransport();
private static final String API_KEY="Myapikey";
private static final String PLACES_SEARCH_URL="https://maps.googleapis.com/maps/api/place/search/json?";
private static final String PLACES_TEXT_SEARCH_URL="https://maps.googleapis.com/maps/api/place/search/json?";
private static final String PLACES_DETAILS_URL="https://maps.googleapis.com/maps/api/place/details/json?";
private double _latitude;
private double _longitude;
private double _radius;
public PlacesList search(double latitude, double longitude,double radius, String types) throws Exception
{
this._latitude=latitude;
this._longitude=longitude;
this._radius=radius;
try
{
HttpRequestFactory httpRequestFactory =createRequestFactory(HTTP_TRANSPORT);
HttpRequest request=httpRequestFactory
.buildGetRequest(new GenericUrl (PLACES_SEARCH_URL));
request.getUrl().put("key",API_KEY);
request.getUrl().put("location",_latitude+","+_longitude);
request.getUrl().put("radius",_radius);
request.getUrl().put("sensor",false);
if(types!=null)
request.getUrl().put("types",types);
PlacesList list=request.execute().parseAs(PlacesList.class);
Log.d("Places Status",""+list.status);
return list;
}
catch (HttpResponseException e)
{
Log.e("Error:",e.getMessage());
return null;
}
}
public PlaceDetails getPlaceDetails(String reference) throws Exception
{
try
{
HttpRequestFactory httpRequestFactory = createRequestFactory(HTTP_TRANSPORT);
HttpRequest request=httpRequestFactory
.buildGetRequest(new GenericUrl(PLACES_DETAILS_URL));
request.getUrl().put("key",API_KEY);
request.getUrl().put("reference",reference);
request.getUrl().put("sensor","false");
PlaceDetails place = request.execute().parseAs(PlaceDetails.class);
return place;
}
catch (HttpResponseException e)
{
Log.e("Error in Place Details",e.getMessage());
throw e;
}
}
public static HttpRequestFactory createRequestFactory(
final HttpTransport transport)
{
return transport.createRequestFactory(new HttpRequestInitializer()
{
public void initialize(HttpRequest request)
{
GoogleHeaders headers=new GoogleHeaders();
headers.setApplicationName("PocketAmbulance");
request.setHeadres(headers);
JSONObjectParser parser=new JsonHttpParser(new JacksonFactory());
request.addParser(parser);
}
});
}
}
1 ответ
HttpClient устарел на уровне API 22 и удален на уровне API 23. Если вы все еще хотите его использовать, добавьте его в свой файл gradle, унаследованную библиотеку
android {
useLibrary 'org.apache.http.legacy'
}