May*_*yur 8 java spring spring-mvc spring-roo
我想创建一个API,它可以将参数作为multipart文件和JSON对象(@RequestBody).请在调用此API时找到以下代码段,我收到415 HTTP错误.如果我删除"@RequestBody LabPatientInfo reportData",那么它工作正常.
@RequestMapping(value={"/lab/saveReport"}, method={RequestMethod.POST}, 
            consumes={"multipart/form-data"}, headers={"Accept=application/json"})
    @ResponseBody
    public ResponseEntity<String>
    saveReport(@RequestParam(value="reportFile") MultipartFile reportFile,
               @RequestBody LabPatientInfo reportData) throws IOException {
        HttpHeaders headers = new HttpHeaders();
        headers.add("Content-Type", "application/json; charset=utf-8");
        logger.info("in Lab Save Report");
        logger.info("Report Data {} ", reportData);
        //logger.info("Request BODY {} ", request.getAttribute("data"));
        return new ResponseEntity<String>(HttpStatus.OK);
    }
以下是LabPatientInfo类.
@RooJson(deepSerialize = true)
@RooToString
public class LabPatientInfo {
    private String firstName;
    private String phoneNumber;
    private String DateOfBirth;
    private Integer age;
    private String gender;
    private String refferedBy; 
    private String reportfile;
    private String reportType;
    private String reportDate;
    private String purpose;
    private String followUpDate;
    private List<ReportDataInfo> analytes;
在点击API时,我正在传递跟随上传文件的JSON对象.
{
    "firstName":"abc",
    "phoneNumber":"898989",
    "DateOfBirth":"asas",
    "age":"asas",
    "gender":"asas",
    "refferedBy":"asas",
    "reportfile":"asas",
    "reportType":"asas",
    "reportDate":"asas",
    "purpose":"asas",
    "followUpDate":"asas",
    "analytes":null
}
aba*_*hel 10
您可以@RequestPart如下使用。这将支持json对象和多部分文件。
@ResponseBody
public ResponseEntity<String>
saveReport(@RequestPart (value="reportFile") MultipartFile reportFile,
           @RequestPart LabPatientInfo reportData) throws IOException {
为了使用curl测试它,您可以为json部分创建一个文件(reportData)。假设您创建了“ mydata.json”文件,并将您的json有效负载粘贴到其中。并说您的reportFile是“ report.txt”。现在,您可以使用curl发出请求,如下所示。
curl -v -H "Content-Type:multipart/form-data" -F "reportData=@mydata.json;type=application/json" -F "reportFile=@report.txt;type=text/plain"  http://localhost:8080/MyApp/lab/saveReport
| 归档时间: | 
 | 
| 查看次数: | 10106 次 | 
| 最近记录: |