복붙노트

[SPRING] retrofit에서 byte [] 배열을 보내는 법

SPRING

retrofit에서 byte [] 배열을 보내는 법

개조 호출에서 byte [] 배열을 어떻게 보냅니 까?  byte []를 보내면됩니다. 나는 내가 개장 요청을 보내려고 할 때이 예외를 받는다.

추가 장착을 사용하여 전화를 걸 수있는 방법은 무엇입니까?

ByteMessage 객체 클래스에 캡슐화 된 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

해결법

  1. ==============================

    1.이 목적을 위해 TypedByteArray를 사용할 수 있습니다.

    이 목적을 위해 TypedByteArray를 사용할 수 있습니다.

    개조 서비스는 다음과 같습니다.

    @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

    그리고 스프링 MVC 컨트롤러 (필요하다면) :

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

    2.retrofit2의 경우 :

    retrofit2의 경우 :

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

    용법:

    byte[] params = ...
    RequestBody body = RequestBody.create(MediaType.parse("application/octet-stream"), params);
    remoteService.upload(body, new Callback<String>() {
        @Override
        public void success(String s, Response response) {
            //Success Handling
        }
    
        @Override
        public void failure(RetrofitError retrofitError) {
            //Error Handling
        }
    }); 
    
  3. from https://stackoverflow.com/questions/31325723/how-to-send-byte-array-in-retrofit by cc-by-sa and MIT license