最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

RestTemplate 401 獲取錯(cuò)誤信息的處理方案

 更新時(shí)間:2021年08月19日 11:07:20   作者:xyw10000  
這篇文章主要介紹了RestTemplate 401 獲取錯(cuò)誤信息的處理方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

RestTemplate 401錯(cuò)誤

調(diào)用第三方api 若是服務(wù)返回狀態(tài)碼不為200,默認(rèn)會(huì)執(zhí)行DefaultResponseErrorHandler

異常處理

@Override
 public void handleError(ClientHttpResponse response) throws IOException {
  HttpStatus statusCode = getHttpStatusCode(response);
  switch (statusCode.series()) {
   case CLIENT_ERROR:
    throw new HttpClientErrorException(statusCode, response.getStatusText(),
      response.getHeaders(), getResponseBody(response), getCharset(response));
   case SERVER_ERROR:
    throw new HttpServerErrorException(statusCode, response.getStatusText(),
      response.getHeaders(), getResponseBody(response), getCharset(response));
   default:
    throw new RestClientException("Unknown status code [" + statusCode + "]");
  }
 }

判斷是否異常

 protected boolean hasError(HttpStatus statusCode) {
  return (statusCode.series() == HttpStatus.Series.CLIENT_ERROR ||
    statusCode.series() == HttpStatus.Series.SERVER_ERROR);
 }

通常會(huì)直接已異常形勢(shì)拋出,若不特殊處理無法獲取返回提示信息。

需要捕捉HttpClientErrorException 異常,則可獲取返回信息

try{
      ......
    }catch (HttpClientErrorException e) {
                String resBody = e.getResponseBodyAsString();
                log.info("客戶端異常返回:{}", resBody);
                return new ResponseEntity<>(JSON.parseObject(resBody, res), e.getStatusCode());
            } 

一開始我這樣寫,死活返回的都是null

原來跟我設(shè)置的requestFactory有關(guān)

采用SimpleClientHttpRequestFactory 無法獲取提示

需要換成 HttpComponentsClientHttpRequestFactory

RestTemplate通過對(duì)象傳參,response的body為空討論

代碼復(fù)現(xiàn)

實(shí)體類

@Entity
@Table(name = "a",schema = "a")
@JsonIgnoreProperties(value = {"a"})
@Setter
@Generated
public class C {
    @Id
    @GeneratedValue
    private Integer id;
    @Column(name = "diseaseName",length = 255,nullable = false,unique = true)
    private String diseaseName;
    @Column(name = "description",length = 255,nullable = false,unique = true)
    private String description;
    @Column(name = "department",length = 255,nullable = false,unique = true)
    private String department;
}
controller
@ResponseBody
    @RequestMapping(value = "",method = RequestMethod.POST)
    public Response APIcreate(@RequestBody C c) {
        String json = JSONUtil.toJSONString(c);
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
        HttpEntity<String> entity = new HttpEntity<>(json, headers);
        String url = "http://localhost:3001/c";
        ResponseEntity<Commondisease> responseEntity = restTemplate.postForEntity(url, entity, C.class);
        return new ResponseData(ExceptionMsg.SUCCESS, responseEntity);
    }

返回結(jié)果截圖:

返回結(jié)果為空的討論:返回的C類是jpa封裝后的類,即使通過json工具,也無法轉(zhuǎn)換成功

解決辦法一:實(shí)體類轉(zhuǎn)成普通類

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor; 
@Data
@AllArgsConstructor
@NoArgsConstructor
public class C { 
    private Integer id; 
    private String diseaseName; 
    private String description; 
    private String department; 
}
 @ResponseBody
    @RequestMapping(value = "",method = RequestMethod.POST)
    public Response APIcreate(@RequestBody C c) {
        //C c = new Commondisease(1,"zhangsan","11","2222");
        String json = JSONUtil.toJSONString(c);
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
        HttpEntity<String> entity = new HttpEntity<>(json, headers);
        String url = "http://localhost:3001/c/";
        ResponseEntity<Commondisease> responseEntity =         restTemplate.postForEntity(url,entity,C.class);
        return new ResponseData(ExceptionMsg.SUCCESS,responseEntity);
}

返回成功

解決辦法二:添加注解

@Data

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

相關(guān)文章

  • Mybatis新手教程之簡(jiǎn)單入門

    Mybatis新手教程之簡(jiǎn)單入門

    這篇文章主要給大家介紹了關(guān)于Mybatis新手教程之簡(jiǎn)單入門的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • SpringBoot2.X整合Spring-Cache緩存開發(fā)的實(shí)現(xiàn)

    SpringBoot2.X整合Spring-Cache緩存開發(fā)的實(shí)現(xiàn)

    本文主要介紹了SpringBoot2.X整合Spring-Cache緩存開發(fā)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Java咖啡館(1)——嘆咖啡

    Java咖啡館(1)——嘆咖啡

    這篇文章主要給大家介紹了關(guān)于Java咖啡館之嘆咖啡,需要的朋友可以參考下
    2006-12-12
  • 關(guān)于批量插入或更新數(shù)據(jù)(MyBatis-plus框架)

    關(guān)于批量插入或更新數(shù)據(jù)(MyBatis-plus框架)

    這篇文章主要介紹了關(guān)于批量插入或更新數(shù)據(jù)(MyBatis-plus框架),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Java異常處理之try...catch...語句的使用進(jìn)階

    Java異常處理之try...catch...語句的使用進(jìn)階

    這篇文章主要介紹了Java異常處理之try...catch...語句的使用進(jìn)階,重點(diǎn)在于牽扯相關(guān)IO使用時(shí)的資源調(diào)配情況,需要的朋友可以參考下
    2015-11-11
  • @valid 無法觸發(fā)BindingResult的解決

    @valid 無法觸發(fā)BindingResult的解決

    這篇文章主要介紹了@valid 無法觸發(fā)BindingResult的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • spring-cloud入門之eureka-server(服務(wù)發(fā)現(xiàn))

    spring-cloud入門之eureka-server(服務(wù)發(fā)現(xiàn))

    本篇文章主要介紹了spring-cloud入門之eureka-server(服務(wù)發(fā)現(xiàn)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • Java中循環(huán)冗余校驗(yàn)(CRC32)的實(shí)現(xiàn)

    Java中循環(huán)冗余校驗(yàn)(CRC32)的實(shí)現(xiàn)

    CRC校驗(yàn)實(shí)用程序庫在數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)通訊領(lǐng)域,為了保證數(shù)據(jù)的正確,就不得不采用檢錯(cuò)的手段,下面這篇文章主要給大家介紹了關(guān)于Java中循環(huán)冗余校驗(yàn)(CRC32)實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-10-10
  • spring boot2結(jié)合mybatis增刪改查的實(shí)現(xiàn)

    spring boot2結(jié)合mybatis增刪改查的實(shí)現(xiàn)

    這篇文章主要給大家介紹了關(guān)于spring boot2結(jié)合mybatis增刪改查的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用spring boot2具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Java創(chuàng)建線程的方式解析

    Java創(chuàng)建線程的方式解析

    這篇文章主要介紹了Java創(chuàng)建線程的方式解析,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)有所幫助
    2022-07-07

最新評(píng)論

石台县| 田林县| 扎赉特旗| 舟曲县| 新兴县| 芮城县| 永城市| 磐安县| 阜阳市| 平湖市| 庆安县| 丽水市| 宁国市| 怀柔区| 河西区| 施甸县| 汉川市| 建湖县| 遵化市| 黄龙县| 天水市| 绿春县| 沐川县| 万安县| 罗城| 冷水江市| 新乡县| 洮南市| 永登县| 福鼎市| 开阳县| 忻州市| 花垣县| 乌兰县| 乌拉特后旗| 祁连县| 昌黎县| 闽清县| 海阳市| 大关县| 清水县|