2016-07-26 1 views
1

에 여러 개의 응답을 결합 나는 어느 아래의 내용 c50c4a23307529b59797525c52b2c50c *한 응답

지금 내가 JSON으로 file1Response 및 file2Response & 수익을 결합하려는 file1.zip을 가진 파일을 다운로드합니다. 그것을하는 방법에 어떤 도움? 자바 클래스 인 java.util.ArrayList에 대한 메시지 본문 작가 및 Java :

@GET 
    @Path("/" + getfileschecksum) 
    @Produces("application/json") 
    public Response getFilesChecksum() { 
      String fileid1 = "file1"; 
      String fileid2 = "file2"; 

      ArrayList<Response> rp = new ArrayList<Response>(); 

      Response file1Response = getChecksum(fileid1); 
      Response file2Response = getChecksum(fileid2); 

      rp.add(file1Response); 
      rp.add(file2Response); 
      return Response.ok(rp).build(); 


     } 

오류 com.sun.jersey.api.MessageException을 반환 다음과 같이
@GET 
@Path("/" + getfileschecksum) 
@Produces("application/json") 
public Response getFilesChecksum() { 
     String fileid1 = "file1"; 
     String fileid2 = "file2"; 


     Response file1Response = getChecksum(fileid1); 
     Response file2Response = getChecksum(fileid2); 

     return file1Response; 


    } 

는 ArrayList에 추가 시도 java.util.ArrayList 클래스를 입력하고 MIME 미디어 유형 application/json을 찾을 수 없습니다.

file1 응답은 아래에서 오는 것으로, 문자열을 반환하기 위해 아래 내용을 변경할 수 있습니까?

  URL url = new URL(binpath); 
      URLConnection connection = url.openConnection(); 
      InputStream is = connection.getInputStream(); 
      String mt = connection.getContentType(); 
      ResponseBuilder response = Response.ok((Object) is, mt); 
      response.header("Content-Disposition","attachment; filename=" + binpath.substring(binpath.lastIndexOf('/') + 1, binpath.length())); 
      return response.build(); 
+0

응답은 javax.ws.rs.core.Response 객체라고 가정합니다. 먼저 이것은 인터페이스이기 때문에 작동하지 않을 것이고 serializer에 serialize하는 방법을 알려주기 위해 @JsonTypeInfo를 추가해야 할 것입니다. ArrayList를 ArrayList 으로 변환하고 Response 객체가 아닌 실제 문자열 값을 입력해야합니다. –

+0

file1Response.getEntity(). toString()을 시도했지만 실제 내용이 아닌 [email protected]를 반환합니다. 응답에서 문자열을 얻는 방법? – Newbie

답변

0

시도 :

StringBuffer response = new StringBuffer(); 
response.append(file1Response); 
response.append(file2Response); 

return response.toString(); 

아니 해가 작동하지 않을 경우에만 도움을하려고합니다. 하지만 엄지 손가락을 올리면.

+0

작동하지 않았으므로 file1Response에서 내용을 반환하지 않습니다. – Newbie

0

실제로 문자열 검사 값을 반환하는 다른 메서드를 만든 다음 리소스 메서드에서이를 호출하도록하는 것이 좋습니다.

@GET 
@Path("{file}/checksum") 
Response getChecksum(@PathParam("file") final String file) { 
    return Response.ok(calculateChecksum(file)).build(); 
} 


@POST 
@Path("checksums") 
Response getChecksum(final List<String> toChecksum) { 
    final List<String> checksums = new ArrayList<>(); 
    for (String s : toChecksum) { 
     checksums.add(calculateCheckSum(s)); 
    } 
    return Response.ok(checksums).build(); 
} 



private String calculateCheckSum(final String file) { 
    // do your checksum 
} 
+0

URL url = 새 URL (binpath); URLConnection connection = url.openConnection(); InputStream is = connection.getInputStream(); String mt = connection.getContentType(); ResponseBuilder 응답 = Response.ok ((Object) is, mt); response.header ("Content-Disposition", "attachment; filename ="+ binpath.substring (binpath.lastIndexOf ('/') +1, binpath.length())); return response.build(); 이것은 문자열로 가져와야하는 file1Response를 반환합니다. – Newbie

+0

나는 완전히 그 질문을 잘못 읽었다. json으로 이진 파일을 반환 할 수는 없습니다. 불가능합니다. 단일 요청으로 두 개의 파일 바이너리 파일을 반환하려는 경우 이는 내가 볼 수있는 한 가능하지 않습니다. 가능하다해도 파일은 하나의 파일로 나타나며 손상된 것으로 보입니다. 다중 파일을 다운로드해야하는 경우 단일 아카이브 파일을 보내기 전에 서버 측에서 단일 zip, tar, rar 등으로 아카이브해야합니다. 귀하의 경우 그것은 마치 지퍼의 우편 일 것 같습니다. –

+0

파일의 텍스트 내용 만 있습니다. Java에서 내용을 읽을 수 있습니까? 또는 ResponseBuilder를 사용하여 파일에서 String에 대한 응답을 변경하는 방법이 있습니다. – Newbie

관련 문제