Mit https://github.com/dcodeIO/ProtoBuf.js/ ich eine Botschaft, die ich zu einem ByteBuffer zu einem Java-Server senden möchten verschlüsselt senden Charge genannt:Ajax eine Proto-buf-Nachricht an einen Java-Server
batch:
ByteBuffer {array: ArrayBuffer, view: DataView, offset: 0, markedOffset: -1, length: 139…}
array: ArrayBuffer
length: 139
littleEndian: false
markedOffset: -1
offset: 0
view: DataView
__proto__: Object
Jetzt möchte ich dies senden mit jquery's Ajax:
$.ajax({
url: myUrl,
type: 'POST',
data : batch,
contentType: 'application/protobuf',
accept: 'application/json'
})
Aber ich kann nicht scheinen, dies zu tun. Der obige Code gibt mir die jquery Ausnahme:
Uncaught TypeError: Cannot set property 'littleEndian' of undefined myScript.js:1353
ByteBuffer.LE bunk.js:1353
jQuery.param.add jquery.js:7203
buildParams jquery.js:7261
jQuery.param jquery.js:7223
jQuery.extend.ajax
Wenn ich ein Array-Puffer von Charge erhalten (batch.toArrayBuffer()) der Java-Server bekommt nichts von
ByteStreams.toByteArray(req.getInputStream());
Wie soll ich das ByteBuffer kodieren so senden? Und wie soll ich es in ein Java-Byte-Array entschlüsseln?
Haben Sie Glück dabei? Ich setze den contentType auf application/x-protobuf und das Objekt auf der Java-Seite ist nicht null, hat aber nicht die gesendeten Werte. Ideen? – SergioM
ProtoBuf.js verwendet das ursprüngliche Protokoll protobuf, das über ein binäres Protokoll (wie Websockets) gesendet werden soll, weshalb die Daten mit "ByteBuffer" gespeichert werden. Was Sie suchen, klingt mehr wie "PBLite", das ist Google JS datenähnliche Marke von Protobuf (die als indizierte JS-Array gesendet wird). – user120242
Wenn Sie sich für blite interessieren: http://closure-library.googlecode.com/git-history/docs/namespace_goog_proto2.html Ein paar Leute hier und da entwickelt einige pblite Tools – user120242