发出请求时无法忽略可选查询参数

时间:2019-04-16 11:38:09

标签: java spring

我正在使用Spring拨打Rest服务电话。如果我传递了所有参数或为参数传递了空字符串,则其余调用工作正常。但是,如果我故意不传递任何参数,它将引发以下异常。请注意,查询参数都是可选的。

IllegalArgumentException:地图对someField没有值。”

在下面的示例中,我不想为some_field字段传递任何内容。但是,除非我输入一个空字符串,否则它不会起作用。如之前提到。

在我的配置文件中:

url=https://mydomain/locale/type/{type}/id/{id}?some_field={someField}&my_point={myPoint} 

进行剩余呼叫的方法。

public Object getDetails(String url) {

        HashMap<String, String> params = new HashMap<>();
        params.put("id", id);
        params.put("my_point", myPoint);
//        params.put("some_field", ""); // Works if I add this. 
        params.put("type", someType);

        return template.exchange(url, HttpMethod.GET, requestEntity, responseType, params);
    }

1 个答案:

答案 0 :(得分:0)

也许尝试用if块将其包围,以检查您的参数是否为null。如果是这样,请执行代码以使其正常运行,或者如果有的话,将其照常放入参数中。

if(some_field == null){
    params.put("some_field", "");
} else {
    //your expected execution when that some_field contains something goes here
}