如何在改装调用中发送byte []数组.
我只需要通过byte []发送.
当我试图发送改装电话时,我得到了这个例外.
retrofit.RetrofitError: retrofit.converter.ConversionException:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException:
Expected a string but was BEGIN_OBJECT at line 1 column 2
我可以使用改造来进行呼叫的方式是什么.
我只是将字节数组作为封装在对象类中的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<String> cb);
您的客户代码:
byte[] byteArray = ...
TypedInput typedBytes = new TypedByteArray("application/octet-stream", byteArray);
remoteService.upload(typedBytes, new Callback<String>() {
@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<String> receive(@RequestBody byte[] data) {
//handle data
return new ResponseEntity<>(HttpStatus.CREATED);
}