欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

RestTemplate報(bào)錯(cuò)400 Bad Request的解決方案

 更新時(shí)間:2024年11月08日 08:58:25   作者:夏詩(shī)曼CharmaineXia  
在使用Spring Boot時(shí),若直接通過@Autowired注入RestTemplate可能會(huì)遇到400BadRequest錯(cuò)誤,原因在于Spring Boot官方文檔指出,由于RestTemplate實(shí)例通常需要在使用前進(jìn)行定制,因此Spring Boot不會(huì)自動(dòng)配置單個(gè)RestTemplate Bean

RestTemplate報(bào)錯(cuò)400 Bad Request

使用RestTemplate發(fā)送http請(qǐng)求,發(fā)現(xiàn)報(bào)錯(cuò)400 Bad Request,其實(shí)這是個(gè)很基礎(chǔ)的問題,一般都能繞過去,像我這樣直接復(fù)制代碼才有可能發(fā)生這樣的錯(cuò)誤情況。

先上原碼:

    @Autowired
    RestTemplate restTemplate;

    public boolean alarm(String url,String body) {
            if (body == null || url == null) {
                return false;
            }
        try {
            HttpHeaders httpHeaders = new HttpHeaders();
            httpHeaders.add(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_JSON.toString());

            HttpEntity<String> entity = new HttpEntity<>(body, httpHeaders);
            FeishuAlarmResp result = restTemplate.postForObject(url, entity, FeishuAlarmResp.class);
            if (result == null || result.getStatusCode() == null || result.getStatusCode() != 0) {
                log.error("http發(fā)送失敗>>>>>>result={} message={}",JSON.toJSONString(result),body);
                return false;
            }
        } catch (Throwable t) {
            log.error("http發(fā)送異常:url:" + url + ",body:" + body, t);
            return false;
        }
        return true;
    }

直接報(bào)錯(cuò):

org.springframework.web.client.HttpClientErrorException: 400 Bad Request

問題所在

不能直接使用 @Autowired 自動(dòng)注入 RestTemplate 使用。

因?yàn)?,官網(wǎng)文檔有寫:

Since RestTemplate instances often need to be customized before being used, Spring Boot does not provide any single auto-configured RestTemplate bean.

(由于RestTemplate實(shí)例在使用前通常需要定制,Spring Boot不提供任何單個(gè)自動(dòng)配置的RestTemplate bean。)

解決辦法

自定義RestTemplate的Bean對(duì)象,重點(diǎn)是要用restTemplateBuilder.build()來創(chuàng)建對(duì)象。

方法1

@Autowired
private RestTemplateBuilder restTemplateBuilder;
@Autowired
private RestTemplate restTemplate;
@Bean
public RestTemplate getRestTemplate() {
    return restTemplateBuilder.build();
}

//調(diào)用方式:
String baiduHtml = restTemplate.getForObject("https://www.baidu.com", String.class);
System.out.println(baiduHtml);

方法2:寫個(gè)config類

然后就可以用 @Autowired 自動(dòng)注入 RestTemplate 使用了。

@Component
public class RestTemplateConfig {


    /**
     * RestTemplate
     * @return RestTemplate
     */
    @Bean
    public RestTemplate restTemplate() {
        return getRestTemplate();
    }

    /**
     * 獲取自定義 RestTemplate
     * @return RestTemplate
     */
    private RestTemplate getRestTemplate() {
        RestTemplate restTemplate = new RestTemplateBuilder()
                .setConnectTimeout(5 * 1000)
                .setReadTimeout(60 * 1000)
                .build();
        // 為避免漢字變成問號(hào),將String轉(zhuǎn)換器編碼格式置為 UTF-8
        restTemplate.getMessageConverters().forEach(converter -> {
            if (converter instanceof StringHttpMessageConverter) {
                ((StringHttpMessageConverter) converter).setDefaultCharset(StandardCharsets.UTF_8);
            }
        });
        return restTemplate;
    }
}

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java.lang.NumberFormatException異常解決方案詳解

    java.lang.NumberFormatException異常解決方案詳解

    這篇文章主要介紹了java.lang.NumberFormatException異常解決方案詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Java中拼接字符串String的N種方法總結(jié)

    Java中拼接字符串String的N種方法總結(jié)

    字符串拼接是我們?cè)贘ava代碼中比較經(jīng)常要做的事情,就是把多個(gè)字符串拼接到一起,下面這篇文章主要給大家介紹了關(guān)于Java中拼接String的N種方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02
  • Java經(jīng)典面試題匯總:JVM

    Java經(jīng)典面試題匯總:JVM

    本篇總結(jié)的是JVM相關(guān)的面試題,后續(xù)會(huì)持續(xù)更新,希望我的分享可以幫助到正在備戰(zhàn)面試的實(shí)習(xí)生或者已經(jīng)工作的同行,如果發(fā)現(xiàn)錯(cuò)誤還望大家多多包涵,不吝賜教,謝謝
    2021-07-07
  • Java橋接模式原理及用法解析

    Java橋接模式原理及用法解析

    這篇文章主要介紹了Java橋接模式原理及用法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Java數(shù)組(Array)最全匯總(上篇)

    Java數(shù)組(Array)最全匯總(上篇)

    這篇文章主要介紹了Java數(shù)組(Array)最全匯總(上篇),本文章內(nèi)容詳細(xì),通過案例可以更好的理解數(shù)組的相關(guān)知識(shí),本模塊分為了三部分,本次為上篇,需要的朋友可以參考下
    2023-01-01
  • Java二維數(shù)組實(shí)現(xiàn)數(shù)字拼圖效果

    Java二維數(shù)組實(shí)現(xiàn)數(shù)字拼圖效果

    這篇文章主要為大家詳細(xì)介紹了Java二維數(shù)組實(shí)現(xiàn)數(shù)字拼圖效果,控制臺(tái)可以對(duì)空格進(jìn)行移動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Java遞歸算法經(jīng)典實(shí)例(經(jīng)典兔子問題)

    Java遞歸算法經(jīng)典實(shí)例(經(jīng)典兔子問題)

    本文主要對(duì)經(jīng)典的兔子案例分析,來進(jìn)一步更好的理解和學(xué)習(xí)java遞歸算法,具有很好的參考價(jià)值,需要的朋友一起來看下吧
    2016-12-12
  • springmvc多事務(wù)提交和回滾問題

    springmvc多事務(wù)提交和回滾問題

    本文介紹了Spring MVC中如何配置和使用多事務(wù)管理及回滾,重點(diǎn)內(nèi)容包括配置jdbc.properties文件,使用Spring Framework 5.3版本新增的CompositeTransactionManager,以及如何在相關(guān)方法上添加@Transactional注解
    2024-09-09
  • java 中線程等待與通知的實(shí)現(xiàn)

    java 中線程等待與通知的實(shí)現(xiàn)

    這篇文章主要介紹了java 中線程等待與通知的實(shí)現(xiàn)的相關(guān)資料,希望通過本文能幫助到大家,讓大家掌握這樣的功能,需要的朋友可以參考下
    2017-09-09
  • Java8對(duì)List排序的方法大全

    Java8對(duì)List排序的方法大全

    這篇文章主要給大家介紹了關(guān)于Java8對(duì)List排序的方法大全,其實(shí)Java針對(duì)數(shù)組和List的排序都有實(shí)現(xiàn),文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07

最新評(píng)論