Создание встроенного изображения с помощью java gwt

Я пытаюсь написать встроенный образ с помощью Java GWT. Однако изображение не отображается:


Это швы для меня причина этого в том, что я неправильно кодирую его с помощью base64 или что кодировка неправильная.

Поскольку при возврате следующего кода рисунка, который я нашел в Интернете, все работает (так это не так, мой браузер не может отображать встроенные изображения):


Вот как я генерирую свой pic-код. Я открываю URL-адрес и пытаюсь закодировать результат base64:

try {
    IoProvider.get().makeRequestAsText(url,
        new ResponseReceivedHandler() {
          public void onResponseReceived(ResponseReceivedEvent event) {
            final Response response = event.getResponse();
            if (response.getStatusCode() == HTTP_OK){
            callback.onSuccess("data:unknown;base64,"
                + Base64.encode(response.getText()));
            }
          }
        }, options);
} catch ...

Я использую кодировщик base64: http://snipt.net/tweakt/gwt-base64/

Есть идеи, почему сгенерированное изображение недействителен?

РЕДАКТИРОВАТЬ:

Я немного переписал свой код, основываясь на ваших ответах. Вот как это выглядит сейчас:

IoProvider.get().makeRequest(url,
  new ResponseReceivedHandler() {
    public void onResponseReceived(ResponseReceivedEvent event) {
      final Response response = event.getResponse();
        if (response.getStatusCode() == HTTP_OK) {

          // not working
          callback.onSuccess("data:image/jpeg;base64,"
              + Base64Utils.toBase64(response.getText().getBytes()));

          // working image
          // callback.onSuccess("data:unknown;base64,R0lGODlhDwAPAKECAAAAzMzM/////wAAACwAAAAADwAPAAACIISPeQHsrZ5ModrLlN48CXF8m2iQ3YmmKqVlRtW4MLwWACH+H09wdGltaXplZCBieSBVbGVhZCBTbWFydFNhdmVyIQAAOw==");
        }
      }
}, options);

Отредактированный код дает следующий код:


Я также пробовал преобразовать кодировку:

try {
  callback.onSuccess("data:image/jpeg;base64,"
    + Base64Utils.toBase64(response.getText().getBytes("ISO-8859-1")));
} catch (UnsupportedEncodingException e) { }

Что дает этот код:


Как я могу передать ответ кодировщику Base64, без преобразования его в String?

response.getData () - это объект, и мне нравится иметь его как byte [].

6
задан JochenJung 28 June 2011 в 12:27
поделиться