Создание транспортного объекта Google HTTP для HTTP-запроса Android

#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