2013-06-27 20 views
7

Tôi đang gửi dữ liệu đã nén từ ứng dụng java thông qua các nút nút đến trang web. Dữ liệu được nén với mã hóa deflater java và base64. Trên trang web tôi đang cố gắng thổi phồng dữ liệu với https://github.com/dankogai/js-deflate, nhưng nó không hoạt động (kết quả trống). Tui bỏ lỡ điều gì vậy?Làm lệch hướng trong Java - Phồng lên trong Javascript

Java bên:

private String compress(String s) { 
    DeflaterOutputStream def = null; 
    String compressed = null; 
    try { 
     ByteArrayOutputStream out = new ByteArrayOutputStream(); 
     // create deflater without header 
     def = new DeflaterOutputStream(out, new Deflater(Deflater.DEFAULT_COMPRESSION, true)); 
     def.write(s.getBytes()); 
     def.close(); 
     compressed = Base64.encodeBase64String(out.toByteArray()); 
     System.out.println(compressed); 
    } catch(Exception e) { 
     Log.c(TAG, "could not compress data: " + e); 
    } 
    return compressed; 
} 

javascript bên:

var data = RawDeflate.inflate(Base64.fromBase64(compressed)); 

Trả lời

1

Hãy thử điều này:

public static String compressAndEncodeString(String str) { 
    DeflaterOutputStream def = null; 
    String compressed = null; 
    try { 
     ByteArrayOutputStream out = new ByteArrayOutputStream(); 
     // create deflater without header 
     def = new DeflaterOutputStream(out, new Deflater(Deflater.BEST_COMPRESSION, true)); 
     def.write(str.getBytes()); 
     def.close(); 
     compressed = Base64.encodeToString(out.toByteArray(), Base64.DEFAULT); 
    } catch(Exception e) { 
     Log.e(TAG, "could not compress data: " + e); 
    } 
    return compressed; 
} 
+0

Hoạt động độc đáo kết hợp với JSInflate – ndsc

0

Tôi chạy vào cùng một vấn đề. Lũ phao của dự án js-deflate xuất hiện bị hỏng. Tôi tìm thấy nó sẽ hoạt động trên một đầu vào ngắn nhưng không thành công trên một đầu vào dài (ví dụ, lorem ipsum như dữ liệu thử nghiệm).

Tùy chọn tốt hơn được bật là zlib.js.

Sau đây là cách tôi đang sử dụng nó để thổi phồng trong Javascript một đối tượng JSON được tạo ra, nén và mã hóa base64 trên máy chủ:

var base64toBinary = function (base64) { 
    var binary_string = window.atob(base64); 
    var len = binary_string.length; 
    var bytes = new Uint8Array(len); 
    for (var i = 0; i < len; i++)  { 
     var ascii = binary_string.charCodeAt(i); 
     bytes[i] = ascii; 
    } 
    return bytes.buffer; 
} 

var utf8ToString = function (uintArray) { 
    var encodedString = String.fromCharCode.apply(null, uintArray), 
     decodedString = decodeURIComponent(escape(encodedString)); 
    return decodedString; 
} 

var object = JSON.parse(utf8ToString(
    new Zlib.RawInflate(base64toBinary(base64StringFromServer)).decompress())); 

(FYI, các chức năng helper có nguồn gốc từ stackoverflow khác câu trả lời).

Các vấn đề liên quan