Apache Кодек палаты общин с Android: не мог найти метод

Сегодня я попробовал включая apache.commons.codec пакет в моем приложении Android и не мог получить его выполнение. Android не мог найти метод ord.apache.commons.codec.binary.* и вывод следующие ошибки в DDMS

01-12 8:41:48.161: ERROR/dalvikvm (457): не Мог найти метод org.apache.commons.codec.binary. Base64.encodeBase64URLSafeString, на который ссылаются из метода com.dqminh.app.util. Util.sendRequest

01-12 8:41:48.161: WARN/dalvikvm (457): VFY: не мог разрешить статический метод 10146: Lorg/apache/commons/codec/binary/Base64; .encodeBase64URLSafeString ([B) Ljava/lang/String;

01-12 8:41:48.161: WARN/dalvikvm (457): VFY: отклонение кода операции 0x71 в 0x0004

Какая-либо подсказка о том, как решить эту проблему?Большое спасибо.

47
задан Pablo Fernandez 28 March 2010 в 16:12
поделиться

1 ответ

У меня была похожая проблема при использовании android с OAuth библиотекой, которую я разрабатываю.

Я также получил от android, что, хотя я включил apache.commons.codec в classpath, определенный метод (encodeBase64String) не был найден.

Проверяя javadocs, оба метода заявлены как только для версии 1.4 и выше, поэтому я предполагаю, что android уже включает старую версию commons.codec, в которой эти методы действительно не определены.

Моим решением было использовать более старый метод, например, такой:

String encodedString = new String(Base64.encodeBase64('string to encode'));

Метод, который вы хотите использовать, отличается, поскольку он заменяет + и / на безопасные для url значения - и _. Поэтому вы, вероятно, можете использовать что-то вроде:

String encodedString = new String(Base64.encodeBase64('string to encode'));
String safeString = encodedString.replace('+','-').replace('/','_');

Надеюсь, это поможет!

59
ответ дан 26 November 2019 в 19:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: