如何使用参数Spring MVC发送getForObject请求

我在服务器端有一个方法,可以为我提供有关在数据库中注册的特定名称的信息。我正在从我的Android应用程序访问它。

对服务器的请求正常完成。我想做的就是根据我想获取的名称将参数传递给服务器。

这是我的服务器端方法:

@RequestMapping("/android/played")

public ModelAndView getName(String name) {

System.out.println("Requested name: " + name);

........

}

这是Android的要求:

private Name getName() {

RestTemplate restTemplate = new RestTemplate();

// Add the String message converter

restTemplate.getMessageConverters().add(

new MappingJacksonHttpMessageConverter());

restTemplate.setRequestFactory(

new HttpComponentsClientHttpRequestFactory());

String url = BASE_URL + "/android/played.json";

String nome = "Testing";

Map<String, String> params = new HashMap<String, String>();

params.put("name", nome);

return restTemplate.getForObject(url, Name.class, params);

}

在服务器端,我只会得到:

Requested name: null

是否可以像这样向我的服务器发送参数?

回答:

其余模板期望其中包含变量“ {name}”以供替换。

我认为您正在寻找的是使用查询参数构建URL,您可以选择以下两种方法之一:

  1. 使用UriComponentsBuilder并添加参数
  2. 字符串url = BASE_URL +“ /android/played.json?name={name}”

但是,选项1更灵活。如果您只需要完成此操作,则选项2更直接。

// Assuming BASE_URL is just a host url like http://www.somehost.com/

URI targetUrl= UriComponentsBuilder.fromUriString(BASE_URL) // Build the base link

.path("/android/played.json") // Add path

.queryParam("name", nome) // Add one or more query params

.build() // Build the URL

.encode() // Encode any URI items that need to be encoded

.toUri(); // Convert to URI

return restTemplate.getForObject(targetUrl, Name.class);

以上是 如何使用参数Spring MVC发送getForObject请求 的全部内容, 来源链接: utcz.com/qa/432680.html

回到顶部