2009-05-24 8 views
7

Sto tentando di inviare un byte [] (utilizzando PUT) con Restlet ma non riesco a trovare alcuna informazione su come farlo. Il mio codice è simile al seguente:Invio di dati binari con il client Restlet

Request request = new Request(Method.PUT, url); 
request.setEntity(WHAT DO I PUT HERE?, MediaType.APPLICATION_OCTET_STREAM); 

mi aspettavo di trovare qualcosa lungo le linee di ByteArrayRepresentation, proprio come se ci fosse un JsonRepresentation e uno StringRepresentation ma non ho trovato nulla.

risposta

7

credo che si desidera utilizzare un InputRepresentation, in questo modo:

Representation representation = new InputRepresentation(new ByteArrayInputStream(bytes), MediaType.APPLICATION_OCTET_STREAM); 
request.setEntity(representation); 
+0

Sembra perfetto, grazie! – Yrlec

1

Non ho familiarità con il restlet, ma un modo per farlo sarebbe quello di codificare in base64 i dati. Quindi potresti gestirlo come una normale stringa.

+0

Grazie Emil ma che non è abbastanza efficace in questo caso. Questo codice invierà grandi quantità di dati quindi dover inviare il 33% di dati in più non è un'opzione. – Yrlec

+0

Sì, un po 'capito. Ho pensato di dirlo comunque, comunque. :) –

1

si può provare sottoclasse WritableRepresentation che è stato appositamente progettato per le grandi rappresentazioni