如何在改造中发送byte 数组

如何在改装调用中发送byte []数组。 我只需要通过byte []发送。 当我试图发送改装电话时,我得到了这个例外。

retrofit.RetrofitError:retrofit.converter.ConversionException:com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:期望一个字符串但在第1行第2列是BEGIN_OBJECT

我可以使用改造来进行呼叫的方式是什么。

我只是将字节数组作为封装在对象类中的ByteMessage传递。

public class ByteMessage { private byte[] byteArray; byte[] getByteArray(){ return byteArray; } setByteArray(byte[] bytes){ byteArray=bytes; } } @POST("/send") sendBytes(ByteMesssage msg); server side sendBytes(ByteMessage msg){ byte[] byteArray=msg.getByte(); ...doSomething... } 

我无法在堆栈上找到资源溢出或谷歌搜索通过改进调用传递字节数组的正确解决方案。

任何人都可以帮助这个。

谢谢Dhiren

为此,您可以使用TypedByteArray

您的Retrofit服务将如下所示:

 @POST("/send") void upload(@Body TypedInput bytes, Callback cb); 

您的客户代码:

  byte[] byteArray = ... TypedInput typedBytes = new TypedByteArray("application/octet-stream", byteArray); remoteService.upload(typedBytes, new Callback() { @Override public void success(String s, Response response) { //Success Handling } @Override public void failure(RetrofitError retrofitError) { //Error Handling } }); 

“application / octet-stream” – 而不是这个MIME-TYPE,您可能想要使用您的数据格式类型。 您可以在此处找到详细信息: http : //www.freeformatter.com/mime-types-list.html

和Spring MVC控制器(如果你需要):

 @RequestMapping(value = "/send", method = RequestMethod.POST) public ResponseEntity receive(@RequestBody byte[] data) { //handle data return new ResponseEntity<>(HttpStatus.CREATED); } 

对于改造2:

 @POST("/send") void upload(@Body RequestBody bytes, Callback cb); 

用法:

 byte[] params = ... RequestBody body = RequestBody.create(MediaType.parse("application/octet-stream"), params); remoteService.upload(body, new Callback() { @Override public void success(String s, Response response) { //Success Handling } @Override public void failure(RetrofitError retrofitError) { //Error Handling } });