2009-05-24 15 views
7

Ich versuche, ein Byte [] (mit PUT) mit Restlet zu senden, aber ich kann keine Informationen darüber finden, wie es geht. Mein Code sieht wie folgen aus:Senden von Binärdaten mit dem Restlet-Client

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

ich erwartet hatte etwas entlang der Linien von ByteArrayRepresentation zu finden, so wie es ein JsonRepresentation und ein StringRepresentation aber ich kann nichts finden.

Antwort

7

Ich glaube, Sie InputRepresentation verwenden möchten, etwa so:

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

Das sieht perfekt aus, danke! – Yrlec

1

Ich bin nicht vertraut mit Restlet, aber eine Möglichkeit wäre, Base64 die Daten zu kodieren. Dann könntest du es wie eine normale Saite handhaben.

+0

Dank Emil aber das ist nicht effizient genug, um in diesem Fall. Dieser Code sendet große Datenmengen, so dass 33% mehr Daten gesendet werden müssen. – Yrlec

+0

Ja, irgendwie gedacht. Ich dachte, ich würde es trotzdem erwähnen. :) –

1

Sie versuchen können Subklassen WritableRepresentation, die speziell für große Darstellungen ausgelegt ist

Verwandte Themen