Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.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 使用RequestMapping和FromURI字符串从浏览器进行http调用时的任意输入参数_Java_Http_Spring Boot - Fatal编程技术网

Java 使用RequestMapping和FromURI字符串从浏览器进行http调用时的任意输入参数

Java 使用RequestMapping和FromURI字符串从浏览器进行http调用时的任意输入参数,java,http,spring-boot,Java,Http,Spring Boot,我有以下电话: http://localhost:8080/report?name=HelloReport&download=true 如何在http请求末尾附加任意输入参数 我的代码: ... @RequestMapping(value = "/report", params = {"name", "download"}) public ResponseEntity<byte[]> report( @RequestParam(val

我有以下电话:

http://localhost:8080/report?name=HelloReport&download=true
如何在http请求末尾附加任意输入参数

我的代码:

    ...
    @RequestMapping(value = "/report", params = {"name", "download"})
    public ResponseEntity<byte[]> report(
        @RequestParam(value = "name") String name,
        @RequestParam(value = "download") boolean download) {

    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.parseMediaType("application/pdf"));
    if (download) {
        headers.setContentDispositionFormData("inline", name + ".pdf");
    }
    headers.setCacheControl("must-revalidate, post-check=0, pre-check=0");

    //MultiValueMap<String, String> parameters = UriComponentsBuilder.fromUriString(request.getRequestURI()).build().getQueryParams();
    ...
。。。
@RequestMapping(value=“/report”,params={“name”,“download”})
公众反应报告(
@RequestParam(value=“name”)字符串名称,
@RequestParam(value=“download”)布尔值下载{
HttpHeaders=新的HttpHeaders();
headers.setContentType(MediaType.parseMediaType(“application/pdf”);
if(下载){
headers.setContentDispositionFormData(“内联”,name+“.pdf”);
}
headers.setCacheControl(“必须重新验证,后检查=0,前检查=0”);
//MultiValueMap parameters=UriComponentsBuilder.FromUristing(request.getRequestURI()).build().getQueryParams();
...
我想使用:

MultiValueMap<String, String> parameters = UriComponentsBuilder.fromUriString(request.getRequestURI()).build().getQueryParams();
MultiValueMap parameters=UriComponentsBuilder.fromUriString(request.getRequestURI()).build().getQueryParams();
新的http看起来怎么样


新的@RequestMapping and method report()看起来如何?

您的Spring注释不允许使用任意查询参数。它可能会根据端点所需的缺失参数限制对端点的访问。但不会限制对额外参数的访问

基于这个方法,我现在可以使用这个查询来访问它
/report?name=test&download=false&myfoobar=21243hjof&blablablaba=beepboopbap
。Spring不在乎我添加了
myfoobar
blablaba

要访问所有内容,只需将
HttpServletRequest
参数添加到方法签名中,顺序并不重要

@RequestMapping(value = "/report", params = {"name", "download"})
public ResponseEntity<byte[]> report(
    HttpServletRequest request,
    @RequestParam(value = "name") String name,
    @RequestParam(value = "download") boolean download) {
或者您可以使用请求方法:

request.getParameter("myfoobar") // 21243hjof
或者以你为例,你可以这样做

MultiValueMap<String, String> parameters = UriComponentsBuilder.fromUriString("?"+request.getQueryString()).build().getQueryParams();
MultiValueMap parameters=UriComponentsBuilder.fromUriString(“?”+request.getQueryString()).build().getQueryParams();

您还可以使用
@RequestParam Map allRequestParams
获取所有参数

@RequestMapping(value = "/report", params = {"name", "download"})
public ResponseEntity<byte[]> report(
    @RequestParam Map<String,String> allRequestParams,
    @RequestParam(value = "name") String name,
    @RequestParam(value = "download") boolean download) {
@RequestMapping(value=“/report”,params={“name”,“download”})
公众反应报告(
@RequestParam映射所有RequestParams,
@RequestParam(value=“name”)字符串名称,
@RequestParam(value=“download”)布尔值下载{
@RequestMapping(value = "/report", params = {"name", "download"})
public ResponseEntity<byte[]> report(
    @RequestParam Map<String,String> allRequestParams,
    @RequestParam(value = "name") String name,
    @RequestParam(value = "download") boolean download) {