に複数の応答を組み合わせ、私はそれより下のコンテンツc50c4a23307529b59797525c52b2c50c *は1つのレスポンス
は、今私はJSONとしてfile1Responseとfile2Response &リターンを組み合わせたいfile1.zipでファイルをダウンロードしています。どのようにそれを行うにはどのような助け?次のように
@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クラス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を返しますクラス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();
私はResponseがjavax.ws.rs.core.Responseオブジェクトであると仮定しています。これはインターフェイスなので、シリアル化する方法をシリアライザに伝えるには、まず@JsonTypeInfoを追加する必要があります。 ArrayListをArrayListに変換し、Responseオブジェクトではなく実際の文字列値をそこに配置する必要があります。 –
私はfile1Response.getEntity()。toString()を試しましたが、実際のコンテンツではなく[email protected]を返します。どのように応答から文字列を取得するには? – Newbie