gpt4 book ai didi

android - 在 Android 上使用 Spring 上传 RoboSpice 文件

转载 作者:搜寻专家 更新时间:2023-11-01 08:04:43 28 4
gpt4 key购买 nike

我一直在尝试了解如何将 RoboSpice 与 Spring 结合使用以将文件上传到我的服务器,但我找不到有效的示例。从我找到的一个例子中,我构建了:

   class UploadJsonRequest extends SpringAndroidSpiceRequest<APIResponseUpload> {

public UploadJsonRequest() {
super( APIResponseUpload.class );
}

@Override
public APIResponseUpload loadDataFromNetwork() throws Exception {

MultiValueMap<String, Object> parts = new LinkedMultiValueMap<String, Object>();
for(org.calflora.observer.model.Attachment a : o.attachments){

parts.add(a.name, new FileSystemResource(a.localPath));

}
//parts.add("record", base);
return getRestTemplate().postForObject(URI, parts, APIResponseUpload.class);
}
}
return new UploadJsonRequest();

但是,这给了我错误:

Caused by: org.springframework.web.client.HttpClientErrorException: 404 err: org.apache.commons.fileupload.FileUploadBase$InvalidContentTypeException: the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is application/json;charset=UTF-8

好的,所以这似乎表明我需要做一些额外的事情来指示应该使用 multipart/form-data 传输数据。如果这是正确的,这是怎么做到的?如果这不正确,那么规范的方法是什么,因为这显然是一个普遍的需求?

最佳答案

就我而言,以下解决了这个问题

HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<MultiValueMap<String, Object>>(parts, requestHeaders);

RestTemplate restTemplate = getRestTemplate();
restTemplate.getMessageConverters().add(new FormHttpMessageConverter());
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());

return restTemplate.postForObject(URI, requestEntity, APIResponseUpload.class);

但是,根据 Spring 的文档,这应该没有必要手动设置消息转换器。

关于android - 在 Android 上使用 Spring 上传 RoboSpice 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15944660/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com