首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用泽西2发送多部分json字符串

用泽西2发送多部分json字符串
EN

Stack Overflow用户
提问于 2015-08-19 09:00:38
回答 1查看 3.1K关注 0票数 2

我想编写一个上载json字符串的Java客户机。我有一个关于webservice和C++代码的描述,但这对我没有帮助。不幸的是,我在网上找到的解决方案对我不起作用。对必须使用MultiPart的webservice的描述。

  • MultiPart
    • ContentDispositionHeader: form-data name = "\ObjectInfo"\
      • 一些信息
      • 更多信息
      • ……

代码语言:javascript
复制
- ContentDispositionHeader:  form-data name = filename  
    - File multipart data

这个描述对我没有太大帮助。在创建MultiPart时,我会遇到一个很长的异常堆栈,当我试图发布数据时,会得到一个非常长的异常堆栈。代码片段如下所示:

代码语言:javascript
复制
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()));

例外的明星有:

代码语言:javascript
复制
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错误,我可以提供所需的全部信息。

我现在知道我做错了什么,你们有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-19 09:09:41

我想你在你的项目中漏掉了下面的罐子。

代码语言:javascript
复制
1. mimepull.jar
2. jersey-multipart.jar
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32090933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档