Ich versuche, einen Webservice zu implementieren, der eine JSON-Zeichenfolge akzeptiert und basierend auf dem Schlüssel eine ZIP-Datei abruft.So senden Sie eine Multipart-Antwort mit dem RestEasy-Framework
Dann muss ich die ZIP-Datei und eine JSON-Zeichenfolge in einem mehrteiligen Daten gebündelt senden.
Also im Grunde meiner Antwort soll ein mehrteiliger Objekt enthält zwei Teile
1) .zip file
2) json string
Hier ist mein aktueller Code
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;
}
}
Wenn jedoch der Lauf der oben mir nicht in der Lage ist um die mehrteilige Antwort zu holen. Stattdessen erhält eine die folgende Ausnahme
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
Veröffentlichen Sie weitere Details zu den Abhängigkeiten, die Sie verwenden. –