调用webservice中的方法时出错404

时间:2014-12-27 06:29:41

标签: web-services spring-mvc jax-rs multipartform-data media-type

我是webservice的新手。我使用spring mvc和webservice将文件上传到服务器。在spring控制器中,我尝试在多值映射中添加参数,如下面的

MultiValueMap<String, Object> formData = new LinkedMultiValueMap<String, Object>();
formData.add("caption", "Test Caption");
formData.add("file",new FileSystemResource("/home/mytxt");
formData.add("jsonData",imageJson);

我的httpheader和httpentity看起来像下面那个

HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setContentType(MediaType.MULTIPART_FORM_DATA);
final HttpEntity<MultiValueMap<String,Object>> requestEntity = new HttpEntity<>(
                    formData, requestHeaders);

在服务方面,我的方法看起来像

@Path("/addImage")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response copyFromLocal(
            @FormDataParam("file") InputStream uploadedInputStream ) throws IOException 
{       
    return null;
}

到目前为止一切都很好,但是当我使用下面的方法时,不会调用该方法

@POST
@Path("/addImage")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response copyFromLocal(
        @FormDataParam("file") InputStream uploadedInputStream,
        @FormDataParam("file") FormDataContentDisposition content)
        throws IOException 
{   
}

客户端代码

MultiValueMap<String, Object> formData = new LinkedMultiValueMap<String, Object>();
formData.add("caption", "Test Caption");
formData.add("file",new FileSystemResource("/home/txt"));
formData.add("jsonData",imageJson);
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setContentType(MediaType.MULTIPART_FORM_DATA);
final HttpEntity<MultiValueMap<String,Object>> requestEntity = new HttpEntity<>(
                    formData, requestHeaders);
responseFromService = this.baseAdapter.makeRequest(HttpMethod.POST,
                    requestEntity, relativeURL, String.class,true);

BaseAdapter类使用Spring RestTemplate发布url。

我希望将控制器中地图中存在的所有参数传递给服务端的方法。任何人都可以帮我解决问题吗?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

我看到你在两个不同的参数上指定了两个@FormDataParam("file")注释,我认为它应该只应用于一个。

@POST
    @Path("/addImage")
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public Response copyFromLocal(
            InputStream uploadedInputStream,
            @FormDataParam("file") FormDataContentDisposition content)
            throws IOException {

    }