2013-06-17 4 views
0

Я использую веб-сервис для передачи данных между Android APP и SOAP Webservice. Это Webservice, принимает только сериализованные объекты, и единственный способ сделать это, является использование:Хорошая идея использовать sun.misc.BASE64Decoder/sun.misc.BASE64Encoder?

import sun.misc.BASE64Decoder; 
import sun.misc.BASE64Encoder; 

Этого класс позволяет «шифровать» данные в виде одной строки и наоборот, но вопрос:

1. - Есть, для производственных целей, хорошая идея?

2. - Есть другие способы сделать то же и более эффективно?

Спасибо за все отзывы и хорошее программирование!

+0

Если вы уверены, что работаете на JVM Oracle, вы можете себе это позволить; если вы не уверены, не надо! (примечание: говорить о веб-сервисе, очевидно) – fge

+1

Если вы делаете это на Android, есть класс для этого http://developer.android.com/reference/android/util/Base64.html. Главное, это связывает вас с Oracle VM, которая не работает для таких вещей, как appengine. В качестве альтернативы существует пакет apache-commons-codec. –

+0

Спасибо за ответы, полезно! Если вы измените этот класс для Apache Commons, APPEngine может его использовать? Я немного новичок! Благодаря! – Hypnotize

ответ

2

два вопроса:

1) Используйте Base64 кодирование? Это увеличивает нагрузку (немного) и длину сообщения (довольно много). Преимущество, если у вашего контента есть символы, которые не смешиваются с SOAP (v.g. < >), поскольку они закодированы, они больше не вызывают проблем.

Мое решение? Используйте его для небольших фрагментов информации, которые могут содержать небезопасные символы (v.g. non sanitized Strings). Если вам нужно передать большие капли данных (файл v.g.), попробуйте сделать это с использованием более базового HTTP-подхода, а не с SOAP/JSON.

2) Используйте эту конкретную библиотеку? Как fge состояния, он вводит зависимость от виртуальной машины. Если вы уверены, что используете JVM Oracle, вы можете загрузить сторонний API и использовать его.

+0

Много, много ... 33% не так много для небольших сообщений. Я предпочел бы беспокоиться, если бы ни один конец не использовал сжатие содержимого! – fge

+0

Спасибо за разработанный ответ! Знаете ли вы более простые HTTP-методы для отправки файла (например, Photo (~ 125KB)) в Webservice? Возможно, FTP? Спасибо! – Hypnotize

+0

Для простоты я бы придерживался (простой) передачи файлов HTTP. FTP будет слишком сложным. – SJuan76

0

1) Нет, это неправильно. Ваша программа становится не переносной, потому что пакет sun.misc не является частью Java SE API и не гарантированно присутствует в стандартной библиотеке.

2) Вы можете использовать DatatypeConverter.parseBase64Binary/DatatypeConverter.printBase64Binary от javax.xml.bind.