2014-12-25 32 views
5

Bir Jersey DİNLENME hizmeti birden fazla türde Gönderme hangi verilerin yayınlanacaktır için. Bir o CSV (meta ya JSON veya XML formatında olabilir) için gerçek verileri ve bazı meta verileri bir CSV dosyası olacak. Bunların her ikisi de yayınlanacak gerekiyorsa, bu gibi bir şey olması gerektiği gibi yöntem imza ve burada Java istirahat Jersey: verileri (Dosya ve JSON)

@POST 
@Consumes(MediaType.MULTIPART_FORM_DATA) 
@Produces({MediaType.APPLICATION_JSON}) 
public CreateTaskVO provideService(@FormParam("meta") String v1, 
     @FormParam("data") InputStream v2) { 

Ben bir JSON dizesi ilk parametreyi öngören ediyorum ... servis görünüm için ek açıklamaları eşlik etmelidir nasıl meta-veri ve gerçek veri ikinci bir giriş akışı. Bu eser misiniz?

cevap

7

Bazı çok parçalı biçimini kullanmalısınız. Temel olarak, multipart/xxx türünde tek bir iletiden oluşur (xxx, form-data gibi bir şey olabilir) ve bu ileti kendi içerik türü ve diğer meta verileriyle başka "eksiksiz" iletilerden oluşur.

Hangi Jersey versiyonunu belirtildi, ancak Jersey 2.xx ile başlayan değil

, ayrı bir eser şeklinde, çok parçalı destek mevcuttur:

<dependency> 
    <groupId>org.glassfish.jersey.media</groupId> 
    <artifactId>jersey-media-multipart</artifactId> 
    <version>${jersey.version}</version> 
</dependency> 

Sonra sadece özelliği kaydetmeniz gerekir gibi here in Registration görülmektedir.

Sonra sadece Verilerin çok bölümlü

Diğer rreading iç ileti gövdesi biçimi de istemciden gönderilir ve şekilde nasıl here an example görebilirsiniz @FormDataParam

@POST 
@Consumes(MediaType.MULTIPART_FORM_DATA) 
@Produces({MediaType.APPLICATION_JSON}) 
public CreateTaskVO provideService(
       @FormDataParam("meta") String jsonMeta, 
       @FormDataParam("data") InputStream file, 
       @FormDataParam("data") FormDataContentDisposition fileDetail) { 

kullanabilirsiniz:


GÜNCELLEME da şeklinde, Jersey 1.x.x içinde çok parçalı bu objeyi Orada desteklemek olduğunu

<dependency> 
    <groupId>com.sun.jersey.contribs</groupId> 
    <artifactId>jersey-multipart</artifactId> 
    <version>${jersey.version}</version> 
</dependency>