2015-08-19 2 views
1

Я хочу написать клиент REST Java, который загружает строку json. У меня есть описание веб-сервиса и кода C++, но это мне не помогает. К сожалению, решения, которые я нашел в Интернете, не работают для меня. Описание состояния webservice, которое должно использовать MultiPart.Отправка многопользовательской строки json с помощью Джерси 2

  • MULTIPART
    • ContentDispositionHeader: имя формы-данных = "\ ObjectInfo" \
      • некоторые информация
      • несколько больше информации
      • ....
    • ContentDispositionHeader: form-data name = имя_файла
      • многокомпонентные файла данных

Это описание не помогает мне очень много. Я пытаюсь создать MultiPart, я получаю очень длинный стек исключений при попытке опубликовать данные. Фрагмент кода эс следующим образом: звезды

Client client = ClientBuilder.newBuilder() 
      .register(MultiPartFeature.class) 
      .build(); 
WebTarget target = client.target(baseUri + "/FileHandler?projectRecId="+projectRecId+"&versionRecId="+versionRecId+"&updateSchedules=true"); 

MultivaluedMap<String, String> info = new MultivaluedHashMap<String, String>(); 
info.add("FileTypeRecId", scheduleGuid); 
info.add("CreatedUpdatedBy", user); 
info.add("actualFileName", scheduleFileName); 
info.add("MetaData","PROJECTID:" + projektIdFromJson + ";EINBAUDATUM:" + einbaudatumFromJson); 

MultiPart infoPart = new MultiPart(); 
infoPart.contentDisposition(FormDataContentDisposition.name("ObjectInfo").build()); 
infoPart.bodyPart(new BodyPart().entity(info)); 

MultiPart filePart = new MultiPart(); 
filePart.contentDisposition(FormDataContentDisposition.name(scheduleFileName).build()); 
filePart.bodyPart(scheduleJson, MediaType.APPLICATION_JSON_TYPE); 

MultiPart multiPartEntity = new MultiPart() 
    .bodyPart(infoPart) 
    .bodyPart(filePart); 
Response response = target.request(MediaType.MULTIPART_FORM_DATA) 
    .header("Authorization", "xxx") 
    .post(Entity.entity(multiPartEntity, multiPartEntity.getMediaType())); 

Exception с:

Aug 19, 2015 10:37:14 AM org.glassfish.jersey.internal.Errors logErrors 
WARNUNG: The following warnings have been detected: WARNING: HK2 service reification failed for  [org.glassfish.jersey.media.multipart.internal.MultiPartReaderClientSide]  with an exception: 
MultiException stack 1 of 2 
java.lang.NoClassDefFoundError: org/jvnet/mimepull/MIMEParsingException 
... 
Caused by: java.lang.ClassNotFoundException: org.jvnet.mimepull.MIMEParsingException 
... 

MultiException stack 2 of 2 
java.lang.IllegalArgumentException: Errors were discovered while reifying SystemDescriptor( implementation=org.glassfish.jersey.media.multipart.internal.MultiPartReaderClientSide 
contracts={javax.ws.rs.ext.MessageBodyReader} 
scope=javax.inject.Singleton 
qualifiers={org.glassfish.jersey.internal.inject.Custom} 
descriptorType=CLASS 
descriptorVisibility=NORMAL 
metadata= 
rank=0 
loader=null 
proxiable=null 
proxyForSameScope=null 
analysisName=null 
id=70 
locatorId=1 
identityHashCode=1763344271 
reified=false) 
... 

Есть больше этих ¯hk2 ошибок, я могу предоставить все сообщение о необходимости.

Я понял, что я сделал не так, у вас есть идея?

ответ

0

Я думаю, что в вашем проекте отсутствуют следующие банки.

1. mimepull.jar 
2. jersey-multipart.jar 
+0

Спасибо, mimepull.jar отсутствует. Я случайно добавил mimepull-javadoc.jar вместо этого. – jome

+0

Добро пожаловать. Если это решило вашу проблему, пожалуйста, отметьте соответствующим образом – jozzy

 Смежные вопросы

  • Нет связанных вопросов^_^