当前位置: 首页 > 面试题库 >

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

郭阳曜
2023-03-14
问题内容

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

这是我的Spring请求处理代码

@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...)和请求方法(例如,…)?GETPOST


问题答案:

我建议使用exchange可以接受的方法之一,也可以HttpEntity为其设置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作为request参数传递给postForObject

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

RestTemplate#postForObjectJavadoc中提到了这一点。

该request参数可以是a HttpEntity,以便向请求中添加其他HTTP标头。



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

  • 我想在使用Spring的发出的请求中设置的值。 下面是我的Java REST客户端: 这对我有效;我从服务器端获得一个JSON字符串。 我的问题是:当我使用RESTTemplate时,如何指定头(例如,,...)和请求方法(例如,,...)?

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

  • 问题内容: 在使用XMLHttpRequest进行AJAX调用时,似乎无法从JavaScript更改大多数请求标头。请注意,必须在Gecko浏览器中调用when。设置_Referer时_ ,它没有设置(我查看了使用Firebug和Tamper Data发送的请求标头)。当我设置User-Agent时,它完全搞砸了AJAX调用。但是,设置接受和_内容类型_确实可以。我们是否无法在Firefox 3中

  • 如何为截击请求设置自定义标题?目前,有一种方法可以为POST请求设置正文内容。我有一个简单的GET请求,但我需要同时传递自定义头。我不知道JsonRequest类如何支持它。有可能吗?

  • 大家好。 此外,在请求中有一个基本认证,在这种情况下,我将它包含在邮递员中,它工作正常。另一方面,在我的C#脚本中,我是这样执行的: *这是我的模型,其中包含所有数据,用于将对象序列化为JSON。 *这是我创建POST请求的助手类。我插入所有需要的数据,然后将对象序列化为JSON,正如你们中的一些人建议我这样做的那样。它相当干净。 如果有人知道如何处理这件事,那将是非常感激的。我将继续尝试如何解决