#android #web-services #httpwebrequest #google-api-java-client
#Android #веб-сервисы #httpwebrequest #google-api-java-client
Вопрос:
Я создаю приложение для Android и пытаюсь использовать Google Places API через клиент Google APIs. Я следовал этому примеру:http://ddewaele .blogspot.com/2011/05/introducing-google-places-api.html
У меня возникли проблемы с созданием транспортного объекта HTTP для использования при создании фабрики HTTP-запросов. В eclipse все компилируется нормально, но когда я выполняю отладку во время работы на моем телефоне, я получаю classnotfound в первой строке здесь:
HttpTransport transport = new ApacheHttpTransport();
HttpRequestFactory httpRequestFactory = createRequestFactory(transport);
общедоступный статический HttpRequestFactory createRequestFactory (HttpTransport transport) { верните transport.createRequestFactory(новый HttpRequestInitializer() { @Переопределить инициализация public void (запрос HttpRequest) вызывает исключение IOException { запрос.заголовки.авторизация = "..."; } }); }
В соответствии с JavaDoc для транспортного класса HTTP:
Android:
- Начиная с SDK 2.3, настоятельно рекомендуется использовать com.google.api.client.javanet.NetHttpTransport. Их реализация HTTP-клиента Apache поддерживается не так хорошо.
- Для SDK 2.2 и более ранних версий используйте com.google.api.client.apache.ApacheHttpTransport. com.google.api.client.javanet.NetHttpTransport не рекомендуется использовать из-за некоторых ошибок в реализации HttpURLConnection в Android SDK.
Я работаю на 2.2, поэтому я попытался использовать ApacheHTTPTransport. Я также пробовал NetHttpTransport, но получаю то же самое (classnotfound).
Есть идеи / примеры?
Спасибо!
Комментарии:
1. Использование ApacheHTTPTransport в порядке. Можете ли вы опубликовать трассировку стека, которую вы видите?
2. Если вы создаете приложение для Android, которое должно работать со всеми пакетами Android SDK, просто вызовите AndroidHttp.newCompatibleTransport(), и оно выберет один из этих двух для использования на основе уровня Android SDK.
Ответ №1:
Для запуска Places API в среде Android с использованием клиента Google APIs в вашем проекте Android должны быть следующие зависимости :
- M2_REPO/commons-codec/commons-codec/1.3/commons-codec-1.3.jar
- M2_REPO/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar
- M2_REPO/com/google/api/client/google-api-client/1.4.1-beta/google-api-client-1.4.1-beta.jar
- M2_REPO/com/google/api/client/google-api-client-googleapis/1.4.1-beta/google-api-client-googleapis-1.4.1-beta.jar
- M2_REPO/com/google/code/gson/gson/1.6/gson-1.6.jar
- M2_REPO/com/google/guava/guava/r08/guava-r08.jar
- M2_REPO/org/apache/httpcomponents/httpclient/4.0.3/httpclient-4.0.3.jar
- M2_REPO/org/apache/httpcomponents/httpcore/4.0.1/httpcore-4.0.1.jar
- M2_REPO/org/codehaus/jackson/jackson-core-asl/1.6.5/jackson-core-asl-1.6.5.jar
- M2_REPO/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.jar