2016-10-17 4 views
0

Я пытаюсь интегрировать Mailgun в свое приложение для Android, но у меня много проблем, и мне было интересно, если кто-нибудь, кто успешно использовал Mailgun на Android, может оказать некоторую помощь. Я могу отправлять текстовые электронные письма в соответствии с руководством пользователя Mailgun (https://documentation.mailgun.com/user_manual.html#sending-via-api), но только в том случае, если версия Android устройства, по крайней мере, Lollipop. Любое устройство с более низкой версией Android, я получаю много ошибок относительно отсутствующих классов, связанных с XML, которые я не могу решить, так как не могу импортировать классы javax.*. То же самое происходит, когда я пытаюсь отправить HTML-адрес электронной почты, используя код, описанный в руководстве пользователя.Как отправить HTML-письма с Mailgun на Android <5.0

Пример ошибок, полученных в журнале:

The provider class, class com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$App, could not be instantiated. 
Processing will continue but the class will not be utilized 
java.lang.TypeNotPresentException: Type javax.xml.stream.XMLInputFactory not present 

The provider class, class com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$Text, could not be instantiated. 
Processing will continue but the class will not be utilized                
java.lang.TypeNotPresentException: Type javax.xml.stream.XMLInputFactory not present 

The provider class, class com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$General, could not be instantiated. 
Processing will continue but the class will not be utilized                
java.lang.TypeNotPresentException: Type javax.xml.stream.XMLInputFactory not present 

Таким образом, мне интересно, если кто-нибудь, кто столкнулся с этими проблемами (с использованием Mailgun на Android устройствах < 5,0 и/или отправки HTML писем) и были в состоянии решить их может дать мне несколько указателей. Благодаря!

+0

«Я получаю много ошибок относительно отсутствующие классы XML, связанные с» - вы можете отредактировать свой вопрос и предоставить сведения о том, чего не хватает. – CommonsWare

ответ

2

Как вы указываете официальную документацию Mailgun, я предполагаю, что вы используете библиотеку Jersey 1.x в качестве клиента JAX-RS.

Я предлагаю вам попробовать 2.x ветку. Посмотрите at this.

Кроме того, вы не обязаны использовать Джерси. Любой клиент REST сделает это. В this SO question у вас есть альтернативные варианты и дополнительная информация.

Теперь точно в вашу проблему. Jersey и любая библиотека JAX-RS использует поставщиков для разных вещей, включая дело с контентом (объектами). Кажется, ваша проблема в том, что поставщик XML-объектов по умолчанию использует JAXB или JAXP (те классы javax.xml), которые недоступны в вашем пути к классам. Но you can provide Jersey with any other entity manager for XML content type. Фактически, в текущей документации объясняется how to use MOXy as an alternate JAXB implementation. Он даже скомпилирован как зависимость.

<dependency> 
    <groupId>org.glassfish.jersey.media</groupId> 
    <artifactId>jersey-media-moxy</artifactId> 
    <version>2.23.2</version> 
</dependency> 
+1

Никогда не случалось так, что я мог использовать других клиентов REST, хаха ... решил пойти с Retrofit, который работал как шарм. – myrocks2

0

Вы можете использовать только this library.

Кроме того, необходимо добавить «конфигурацию» в свой Gradle файл и он должен выглядеть следующим образом:

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'net.sargue:mailgun:1.3.2' 
} 

configurations { 
    compile.exclude group: 'javax.inject', module: 'javax.inject' 
} 

Дополнительной информация here