2009-05-24 35 views
7

Tôi đang cố gắng gửi một byte [] (sử dụng PUT) với Restlet nhưng tôi không thể tìm thấy bất kỳ thông tin nào về cách thực hiện. Mã của tôi trông như thế này:Gửi dữ liệu nhị phân với máy khách Restlet

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

tôi đã mong đợi để tìm một cái gì đó dọc theo dòng của ByteArrayRepresentation, giống như có một JsonRepresentation và một StringRepresentation nhưng tôi không thể tìm thấy bất cứ điều gì.

Trả lời

7

Tôi tin rằng bạn muốn sử dụng một InputRepresentation, như vậy:

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

Điều đó có vẻ hoàn hảo, cảm ơn! – Yrlec

1

Tôi không quen với thiết bị đầu cuối, nhưng một cách để làm điều đó là mã hóa base64 dữ liệu. Sau đó, bạn có thể xử lý nó như một chuỗi thông thường.

+0

Cảm ơn Emil nhưng đó không phải là đủ hiệu quả trong trường hợp này. Mã này sẽ gửi một lượng lớn dữ liệu, do đó phải gửi thêm 33% dữ liệu không phải là một tùy chọn. – Yrlec

+0

Yeah, kinda figured. Dù sao thì tôi cũng nghĩ đến nó. :) –

1

bạn có thể thử subclassing WritableRepresentation được thiết kế đặc biệt cho cơ quan đại diện lớn

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