【发布时间】:2018-04-11 07:36:21
【问题描述】:
我正在使用 rest api 发送带有一些数据的文件。 下面是API的签名
@RequestMapping(value = "/file", method = RequestMethod.POST)
public ModelAndView uploadFile(HttpServletRequest request,
HttpServletResponse response,
@RequestParam(required = false) String wfid,
@RequestParam String ssoToken,
@RequestParam(required = false) String typeMedia,
@RequestParam(required = false) String synopsisParam,
@RequestParam(required = false) String slideShowParam,
@RequestParam(required = false) String embedInContentParam,
@RequestParam(required = false) boolean sizeRestrictionRequiredFlag,
@RequestParam MultipartFile file) throws Exception {
logger.info("SSO - " + ssoToken);
return "Output";
}
以下是我创建 POST 请求的方法
void myMethod(String restAPI, String ssoId, byte[] imageByte){
PostMethod post = null;
HttpClient httpClient = new HttpClient();
try {
post = new PostMethod(restAPI);
Part[] parts = new Part[] { new FilePart("myImage.JPG", new ByteArrayPartSource("myImage.JPG", imageByte))};
HttpMethodParams par = post.getParams();
par.getDefaults().setParameter("ssoToken", ssoId);
MultipartRequestEntity multipartRequestEntity = new MultipartRequestEntity(parts, post.getParams());
ByteArrayOutputStream requestContent = new ByteArrayOutputStream();
multipartRequestEntity.writeRequest(requestContent);
post.setRequestEntity(multipartRequestEntity);
post.setRequestHeader("content-type", multipartRequestEntity.getContentType());
/*NameValuePair[] postParameters = new NameValuePair[]{new NameValuePair("ssoToken", ssoId)};
post.setRequestBody(postParameters);*/
int status = httpClient.executeMethod(post);
String responseBody = post.getResponseBodyAsString();
} catch(Exception e){
} finally{
if(post != null){
post.releaseConnection();
}
}
}
我收到 400 - 所需的字符串参数 'ssoToken' 不存在
当我尝试注释代码时 /NameValuePair[] postParameters = new NameValuePair[]{new NameValuePair("ssoToken", ssoId)}; post.setRequestBody(postParameters);/
在上述方法中,将 NameValue 对作为响应正文发送上述异常已解决,但发生多部分文件异常。
有人可以帮助如何创建上面提到的休息控制器的请求。 请在投反对票之前告诉我这个问题。
提前致谢
【问题讨论】: