2016-04-05 14 views
3

json文字列を受け入れ、キーに基づいて.zipファイルをフェッチするWebサービスを実装しようとしています。RestEasyフレームワークを使用してマルチパートレスポンスを送信する方法

次に、マルチパートデータにバンドルされた.zipファイルとjson文字列を送信する必要があります。

だから、基本的に私の応答はここでは、2つの部分

1) .zip file 
2) json string 

を含むマルチパートの目的は、上記を実行するには、私はできないですとき、しかし、私の現在のコード

public class ContentRepo { 



@POST 
@Path("/fetchModel") 
@Consumes("application/json") 
@Produces("multipart/mixed") 
public Response getContent(String strJson) 
{ 
    Response response = null; 
    try{ 
     JSONObject objJson = new JSONObject(strJson); 
     String strAssetName = objJson.getString("assetName"); 
     if(null != strAssetName){ 
      Client client = ClientBuilder.newClient(); 
      ResteasyClient restEasyClient = (ResteasyClient) client; 
      ResteasyWebTarget target = restEasyClient.target("http://localhost:8091/ContentServer/").path("fetchModel"); 
      response = target.request() 
        .post(Entity.entity(getMultiPartData("Car"), MediaType.MULTIPART_FORM_DATA)); 
     } 
    }catch(Exception ex){ 
     ex.printStackTrace(); 
    } 

    return response; 
} 

public MultipartFormDataOutput getMultiPartData(String strAssetName){ 

    MultipartFormDataOutput objMultiPartData = new MultipartFormDataOutput(); 
    JSONObject objJson = new JSONObject(); 

    try{ 
     if(strAssetName.equalsIgnoreCase("Car")){ 
      //car assets 
      try { 
       objMultiPartData.addFormData("file", new FileBody(new File("D:/programs/content_server/Car/Car.zip")), MediaType.APPLICATION_OCTET_STREAM_TYPE); 
       objJson.put("png", "car"); 
       objMultiPartData.addFormData("mapping", new StringBody(objJson.toString()), MediaType.APPLICATION_JSON_TYPE); 
      } catch (UnsupportedEncodingException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 
    }catch(Exception ex){ 
     ex.printStackTrace(); 
    } 

    return objMultiPartData; 
} 

}

である必要がありますマルチパートレスポンスを取得します。代わりに以下の例外を取得

Caused by: java.lang.NoSuchMethodError: org.jboss.resteasy.spi.ResteasyProviderFactory.<init>(Lorg/jboss/resteasy/spi/ResteasyProviderFactory;)V 
at org.jboss.resteasy.client.jaxrs.internal.ClientConfiguration.<init>(ClientConfiguration.java:44) 
at org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder.build(ResteasyClientBuilder.java:347) 
at org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder.build(ResteasyClientBuilder.java:52) 
at javax.ws.rs.client.ClientBuilder.newClient(ClientBuilder.java:114) 
at com.app.wikicontent.WikitudeContentRepo.getARModel(WikitudeContentRepo.java:45) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:155) 
at org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:257) 
at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:222) 
at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:211) 
at org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:525) 
... 25 more 
+0

あなたが使用している依存関係の詳細を投稿してください。 –

答えて

4

あなたのスタックトレースは、それがorg.jboss.resteasy:resteasy-clientをサポートするためにintroducedorg.jboss.resteasy:resteasy-jaxrsまでのバージョン3.0はなかったResteasyProviderconstructorを見つけることができないことを不平を言っています。だから、おそらくあなたのランタイムクラスパスのどこかに古いバージョンのresteasy-jaxrsがあります。それを削除し、展開されたアプリケーションのバージョンがresteasy-jaxrsresteasy-clientであることを確認してください。