2013-03-16 3 views
1

У меня есть вопрос о отправке и получении закодированных данных для изображения. Во-первых, у меня есть изображение в кодировке Base64 типа в строки, эта строка имеет значение, например, как показано ниже: ... D/2wBDAA0JCgsKCA0LCgsODg0PEyAVExISEyccHhcgLikxMC4pLSwzOko + MZZ ...Http get/post для закодированной строки

Теперь, если я декодировать снова и если я использую BitmapFactory для размещения на изображении, все в порядке, изображение в порядке.

byte[] bytes= stream.toByteArray();        
imagestr=Base64.encodeBytes(bytes).toString(); 
//If i code below it is working 
byte[] decode = Base64.decode(imagestr); 
decoded = BitmapFactory.decodeByteArray(decode, 0, decode.length); 

//If i send to the server and handle it in servlet file 
String pic = request.getParameter("p"); 
byte[] servdec = Base64.decode(pic); 
//and if i use the servdec to output a image file file is corrupted. 
//I noticed the pic and imagestr are different 
//imagestr = **...D/2wBDAA0JCgsKCA0LCgsODg0PEyAVExISEyccHhcgLikxMC4pLSwzOko+MzZ...** 
//pic  = **...D/2wBDAA0JCgsKCA0LCgsODg0PEyAVExISEyccHhcgLikxMC4pLSwzOko MzZ...** 
//pic has no + sign. 

Я использовал replaceAll, но это только для этого случая. Это может вызвать большую проблему. так есть ли решение вы можете совет спасибо за ваши ответы ...

Привета, эта строка в картинке, которая приходит к этой функции, после этой функции сервлета будет обрабатывать это! ПИК имеет знак + в этой функции
Строка общественного uuidfaceid (String UUID, String faceid, имя String, String ПИК) {

URL url = null; 

try { 

url = new 

URL ("HTTP: //" + Constants.SERVER_NAME + Constants.SERVER_PORT + "/ MeetInTouch/UF" + " ? uuid = "+ uuid +" & faceid = "+ faceid +" & name = "+ name +" & pic = "+ pic);

} catch (MalformedURLException e1) { 

e1.printStackTrace(); 

} 

URLConnection ucon = null; 

try { 

ucon = url.openConnection(); 

} catch (IOException e1) { 

e1.printStackTrace(); 

} 

try { 

ucon.connect(); 

} catch (IOException e1) { 

e1.printStackTrace(); 

} 
+0

Похоже, проблема вытекания - пробелы заменяются '+' 'для приложения/х-WWW-форм-encoded'. Вероятно, вы должны избежать строки перед отправкой - покажите нам, как вы это делаете. –

ответ

0

Параметр, который «p», содержащий закодированную в Base64 строку, в какой-то момент был «расшифрован по URL». Все, что вам нужно сделать, это кодировать его снова, прежде чем пытаться декодировать Base64:

String pic = request.getParameter("p"); 
pic = URLEncoder.encode(pic, "ISO-8859-1"); 
byte[] servdec = Base64.decode(pic); 
+0

И не забудьте импортировать java.net.URLEncoder –

+0

Привет, спасибо за ваш ответ. Я испробовал ISO-8859-1, UTF-8, UTF-16 /, чтобы перейти на% и еще несколько ... – user1998700

+0

Итак .. что не помогло? –