Http 在Mule中使用Jersey实现文件上载时出现不支持的媒体类型(415)错误
我正在尝试使用Mule中的Jersey模块实现文件上传 我的骡子流如下所示:Http 在Mule中使用Jersey实现文件上载时出现不支持的媒体类型(415)错误,http,file-upload,jersey,mule,Http,File Upload,Jersey,Mule,我正在尝试使用Mule中的Jersey模块实现文件上传 我的骡子流如下所示: <flow name="rest-service"> <inbound-endpoint address="http://localhost:9999/testupload"/> <jersey:resources> <component class="com.example.test.UploadFileResource"/> &
<flow name="rest-service">
<inbound-endpoint address="http://localhost:9999/testupload"/>
<jersey:resources>
<component class="com.example.test.UploadFileResource"/>
</jersey:resources>
</flow>
/**
*
*/
package com.verico.multipart.app;
import javax.ws.rs.ApplicationPath;
import org.glassfish.jersey.media.multipart.MultiPartFeature;
import org.glassfish.jersey.server.ResourceConfig;
@ApplicationPath("/")
public class MultiPartApp extends ResourceConfig {
public MultiPartApp() {
super(MultiPartFeature.class);
}
}
但是,当我将@Consumes注释与多部分表单数据媒体类型(如下所示)放在一起时,该方法不会被调用,并且我会得到HTTP 415不支持的媒体类型,即使使用多部分/表单数据内容类型发出HTTP Post请求:
@Path("/uploadfile")
public class UploadFileResource {
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile2(...) {
logger.info("Multipart Upload");
...
}
}
知道为什么即使@Consumes Media type与HTTP Post内容类型标头匹配,415状态也会出现吗?您可能需要按照Jersey文档第章中的说明注册MultipartFeature 创建一个类,如下所示:
<flow name="rest-service">
<inbound-endpoint address="http://localhost:9999/testupload"/>
<jersey:resources>
<component class="com.example.test.UploadFileResource"/>
</jersey:resources>
</flow>
/**
*
*/
package com.verico.multipart.app;
import javax.ws.rs.ApplicationPath;
import org.glassfish.jersey.media.multipart.MultiPartFeature;
import org.glassfish.jersey.server.ResourceConfig;
@ApplicationPath("/")
public class MultiPartApp extends ResourceConfig {
public MultiPartApp() {
super(MultiPartFeature.class);
}
}
并将以下init参数添加到web.xml中的Jersey servlet:
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.verico.multipart.app.MultiPartApp</param-value>
</init-param>
javax.ws.rs.Application
com.verico.multipart.app.MultiPartApp
upload2()方法的输入参数是什么样子的?我尝试了两个版本:一个没有任何输入参数,即uploadFile2()
,另一个有两个输入参数,即uploadFile2(@FormDataParam(“file”)InputStream uploadedInputStream,@FormDataParam(“file”)formdatacontentdispositionfiledetail)
。我在这两种情况下都得到了相同的结果。你能试着打开跟踪支持(如上所述)并发布响应头来看看发生了什么吗?你的类路径上有jersey multipart JAR吗?