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

RestTemplate 401 獲取錯誤信息的處理方案

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

RestTemplate 401錯誤

調(diào)用第三方api 若是服務(wù)返回狀態(tài)碼不為200,默認會執(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);
 }

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

需要捕捉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通過對象傳參,response的body為空討論

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

實體類

@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)換成功

解決辦法一:實體類轉(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

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

相關(guān)文章

  • Mybatis新手教程之簡單入門

    Mybatis新手教程之簡單入門

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

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

    本文主要介紹了SpringBoot2.X整合Spring-Cache緩存開發(fā)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(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框架),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Java異常處理之try...catch...語句的使用進階

    Java異常處理之try...catch...語句的使用進階

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

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

    這篇文章主要介紹了@valid 無法觸發(fā)BindingResult的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    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)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Java中循環(huán)冗余校驗(CRC32)的實現(xiàn)

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

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

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

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

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

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

最新評論

昆山市| 竹北市| 武鸣县| 临邑县| 随州市| 娱乐| 福安市| 灌南县| 揭阳市| 麻阳| 湖口县| 孟津县| 东方市| 高尔夫| 枣庄市| 南昌市| 靖边县| 特克斯县| 调兵山市| 嘉禾县| 蒙阴县| 上犹县| 平乡县| 安达市| 隆尧县| 中江县| 尉氏县| 澄迈县| 城市| 秭归县| 兰考县| 清涧县| 淮北市| 昆明市| 夏邑县| 彰化县| 凌海市| 高青县| 汪清县| 沾化县| 忻州市|