我正在尝试使用多部分实体构建器从客户端构建多部分请求:
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.addTextBody(MULTIPART_ID,
id,ContentType.TEXT_PLAIN);
builder.addTextBody(DOCT, doc,ContentType.TEXT_PLAIN);
final InputStreamBody fileBody = new InputStreamBody(cachedStream,
ContentType.create(MediaType.APPLICATION_OCTET_STREAM));
builder.addPart(CONTENT_PART, fileBody);
builder.addTextBody(OVERWRIT_PERMIT, String.valueOf(preventOverWrite),ContentType.TEXT_PLAIN);
final HttpPut putMethod= new HttpPut(url);
// putMethod.setHeader("content-type", "multipart/form-data"
putMethod.setEntity(builder.build());
final CloseableHttpResponse response = httpClient.execute(storeMethod);
读取此内容的资源类如下:
@Path("/somePath")
@PUT
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response uploadFunction(@FormDataParam(value="id") String id, @FormDataParam(value="doc") String doc,@FormDataParam(value="content") InputStream content,
@FormDataParam(value="overwrite") Boolean flag) throws SomeException {
我用的是带球衣2的Spring靴。在这一步,当我试图读取其中任何一个参数时,所有这些参数都是空值。因此响应得到一个内部服务器错误。
我还补充道:
register(MultiPartFeature.class);
客户端和服务器应用程序。
此外,还添加了依赖项
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<scope>compile</scope>
</dependency>
有人可以指出我错过了什么吗?我是否需要为服务器创建一个对象,而不是使用@FormDataParam?我已经使用多部分正确搜索了很多,但我还不能修复它。
我在使用解码器后修复了这个问题。还需要代表的DTOobject.So上述资源类已更新为
@Path("/somePath")
@PUT
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response uploadFunction(FormDataMultiPart input){
Map<String, List<FormDataBodyPart>> bodyParts = input.getFields();
bodyParts.get("id").stream().findFirst().ifPresent(id-> dtoObject.setId(id.getValue()));
}
同样,对于其他字段,您也可以检索该值。
问题内容: 对于我来说,目前尚不清楚,在这种情况下,我想使用值接收器而不是始终使用指针接收器。 回顾一下文档: 该 文档 还说:“对于基本类型,切片和小型结构之类的类型,值接收器非常便宜,因此,除非该方法的语义要求使用指针,否则值接收器是高效且清晰的。” 首先, 它说“非常便宜”,但问题是它比指针接收器便宜。因此,我做了一个小的基准测试(基于要点的代码),向我展示了,即使对于只有一个字符串字段的结
问题内容: 进行请求时是否可以接收由远程服务器设置的cookie ? 我需要php来执行http请求,存储cookie,然后使用存储的cookie进行第二个http请求。 问题答案: 您应该为此目的使用实现名为cookie jar的功能,该功能允许将cookie保存在文件中,并将其重新用于后续请求。 这里有一个简短的代码片段,介绍了如何实现: 注意 :必须注意,您应该已安装pecl扩展名(或用PH
解析请求中的Body需要注意Transfer-Encoding头。 当Transfer-Encoding的值为chunked时,不应该使用Content-Length去读取Body。 chunked的Body格式为: 数据以一系列分块的形式进行发送。 Content-Length 首部在这种情况下不被发送。。在每一个分块的开头需要添加当前分块的长度,以十六进制的形式表示,后面紧跟着 ' \r\n
从Queue中接收message 方法参数ReceiveMessageRequest queueName : String : required tagName : String : optional 指定接收请求对应的Tag 如果此值未设置,即从Queue的默认Tag接收 maxReceiveMessageNumber : int : optional 接收到的message的最大数量 当Que
我已经在创建服务方法上注册了接收者,并在销毁方法上取消注册?它工作得很好,但在某些三星Galaxy s3上,即使我停止服务,我仍然会收到接收器。如何找到解决办法?有可能吗?请帮帮我.提前致谢 }
通知广播接收机: 谁能帮帮我吗?我不知道我做错了什么