当前位置: 首页 > 知识库问答 >
问题:

如何在Spring RestTemplate请求上设置“Accept:”头?

徐文彬
2023-03-14

我想在使用Spring的RestTemplate发出的请求中设置Accept:的值。

@RequestMapping(
    value= "/uom_matrix_save_or_edit", 
    method = RequestMethod.POST,
    produces="application/json"
)
public @ResponseBody ModelMap uomMatrixSaveOrEdit(
    ModelMap model,
    @RequestParam("parentId") String parentId
){
    model.addAttribute("attributeValues",parentId);
    return model;
}

下面是我的Java REST客户端:

public void post(){
    MultiValueMap<String, String> params = new LinkedMultiValueMap<String, String>();
    params.add("parentId", "parentId");
    String result = rest.postForObject( url, params, String.class) ;
    System.out.println(result);
}

这对我有效;我从服务器端获得一个JSON字符串。

我的问题是:当我使用RESTTemplate时,如何指定accept:头(例如application/json,application/xml,...)和请求方法(例如get,post,...)?

共有1个答案

袁旻
2023-03-14

我建议使用接受HttpEntityExchange方法之一,您还可以为该HttpHeaders设置HttpHeaders。(还可以指定要使用的HTTP方法。)

例如,

RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));

HttpEntity<String> entity = new HttpEntity<>("body", headers);

restTemplate.exchange(url, HttpMethod.POST, entity, String.class);

我更喜欢这个解决方案,因为它是强类型的。Exchange需要HttpEntity

HttpEntity<String> entity = new HttpEntity<>("body", headers);
restTemplate.postForObject(url, entity, String.class); 

RestTemplate#PostForObjectJavadoc中提到了这一点。

request参数可以是HttpEntity以便向请求添加额外的HTTP头。

 类似资料:
  • 问题内容: 我想在使用Spring的请求中设置的值。 这是我的Spring请求处理代码 这是我的Java REST客户端: 这对我有用;我从服务器端获取了JSON字符串。 我的问题是:当我使用RestTemplate时,如何指定标头(例如)和请求方法(例如,…)? 问题答案: 我建议使用可以接受的方法之一,也可以为其设置。(你也可以指定要使用的HTTP方法。) 例如, 我喜欢这种解决方案,因为它是

  • 我的问题是:在使用RESTTemplate时,如何指定头(例如、,...)和请求方法(例如、,...)?

  • 问题内容: 我的Java Web应用程序有问题。 这是index.jsp中的代码: 当我有线请求时,我的浏览器发送以下标头: Tomcat服务器返回以下信息: 但是,如果我以我的形式发送“é”(UTF-8中的%C3%A9),则会显示“é”。 我了解的是浏览器发送了一个用UTF-8(%C3%A9)编码的“é”。 但是服务器将其解释为ISO-8859-1。因此,%C3解码为Ã,%A9解码为©,然后发

  • AcceptHeaderLocaleResolver解析器会检查客户端(比如,浏览器,等)所发送的请求中是否携带accept-language请求头。通常,该请求头字段中包含了客户端操作系统的地区信息。不过请注意,该解析器不支持时区信息的解析。

  • 问题内容: 我想在对URL 发送请求之前设置代理。因为我能够连接curl命令来设置代理,但是使用Java代码却无法做到这一点。 卷曲命令: 在Java文件中完成代码更改: 通过上述代码在我的java文件中的更改,我得到以下错误: 这表明我无法将该URL与尝试用于连接URL的代理连接。 问题答案: 我认为这可能会有所帮助:

  • 问题内容: 我在Go中做一个简单的http GET: 但是我找不到在doc中自定义请求标头的方法,谢谢 问题答案: 请求的字段是公共的。您可以这样做: