Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Apache HTTP客户端发送HTTP PUT请求时出现问题&;春假_Java_Spring_Rest_Apache Httpcomponents_Http Put - Fatal编程技术网

Java 使用Apache HTTP客户端发送HTTP PUT请求时出现问题&;春假

Java 使用Apache HTTP客户端发送HTTP PUT请求时出现问题&;春假,java,spring,rest,apache-httpcomponents,http-put,Java,Spring,Rest,Apache Httpcomponents,Http Put,我已经开发了一个简单的restapi,它使用springboot2.3.1.RELEASE和oraclejdk14服务于一个简单的httpput请求。下面是服务器端REST端点: @Controller @RequestMapping("/api/documents") public class DocumentController { @PutMapping(value = "/setCurrentTenant", consumes = &quo

我已经开发了一个简单的restapi,它使用springboot2.3.1.RELEASE和oraclejdk14服务于一个简单的httpput请求。下面是服务器端REST端点:

@Controller
@RequestMapping("/api/documents")
public class DocumentController {

   @PutMapping(value = "/setCurrentTenant", consumes = "multipart/form-data")
    public ResponseEntity<?> setCurrentTenant(
             @RequestParam(value = "documentId", required = false) Long documentId,
             @RequestParam("tenantId") Long tenantId) {
        return documentService.setCurrentTenant(documentId, tenantId);
    }
}
我尝试运行代码,一切正常,但当客户端请求发送到服务器时,Spring会记录如下异常:

Resolved [org.springframework.web.bind.MissingServletRequestParameterException:
 Required Long parameter 'tenantId' is not present]

我遗漏了什么吗?

您应该像请求参数一样发送
tenantId

http://localhost:8080/api/document/setCurrentTenant?tenantId=10

我担心的是,为什么在不发送任何文件/二进制数据的情况下使用多部分/表单数据


类租户请求{
长期租约;
长文档ID;
//塞特,盖特
}
@PutMapping(value=“/setCurrentTenant”,consumes=“多部分/表单数据”)
公共响应设置当前租户(租户请求){
//待办事项
}

@PutMapping(value=“/setCurrentTenant”,consumes=“multipart/form data”)
public ResponseEntity setCurrentTenant(@ModelAttribute TenantRequest请求){
//待办事项
}

由于安全原因,它应该在请求内部,如果您需要RequestBody或ModelAttribute注释并创建一个请求对象来映射请求参数,这不是我的问题,我发现还有很多其他方法可以做到这一点。但为什么在一切正常的情况下它不起作用呢??
Resolved [org.springframework.web.bind.MissingServletRequestParameterException:
 Required Long parameter 'tenantId' is not present]
class TenantRequest {
  Long tenantId;
  Long documentId;
  //seter, getter
}

@PutMapping(value = "/setCurrentTenant", consumes = "multipart/form-data")
public ResponseEntity<?> setCurrentTenant(TenantRequest request) {
 // TODO
}
@PutMapping(value = "/setCurrentTenant", consumes = "multipart/form-data")
public ResponseEntity<?> setCurrentTenant(@ModelAttribute TenantRequest request) {
 // TODO
}