一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術(shù)|正則表達(dá)式|

服務(wù)器之家 - 編程語言 - JAVA教程 - 用攔截器修改返回response,對特定的返回進(jìn)行修改操作

用攔截器修改返回response,對特定的返回進(jìn)行修改操作

2020-09-26 21:23a__sen JAVA教程

這篇文章主要介紹了用攔截器修改返回response,對特定的返回進(jìn)行修改操作。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

在開發(fā)的時候遇到這樣的需求:

小程序和ios已經(jīng)上線,Android端還在調(diào)接口,我用了retrofit把所有的參數(shù)統(tǒng)一處理,封裝了一個公共Bean類進(jìn)行擴(kuò)展,然后有一個接口在特定情況下無法解析json為公共bean類,這時候去修改bean和每個接口處理已經(jīng)來不及,這時候就可以用到攔截器了,攔截器可以攔截request,可以處理url,可以設(shè)置緩存,當(dāng)然也可以攔截response

具體思路是:創(chuàng)建攔截器->根據(jù)chain獲取response->根據(jù)response判斷url是否需要特殊處理的->根據(jù)reponse.body().string()獲取json數(shù)據(jù)并轉(zhuǎn)換成bean類->修改bean類并創(chuàng)建新的responsebody和response->return修改完畢的response。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public Interceptor getSignInInterceptor(){
   Interceptor interceptor = new Interceptor() {
     @Override
     public Response intercept(Chain chain) throws IOException {
       Request request = chain.request();
       Response response = chain.proceed(request);
       if(request.url().toString().contains(URL)) {
         String json =response.body().string();
         HttpResult<Object> responseResult = JsonUtil.parseJsonToBean(json,HttpResult.class);
         if(responseResult.getCode() == 1508) {
           responseResult.setData(null);
           String responseJson = JsonUtil.parseObjToJson(responseResult);
           ResponseBody myBody = ResponseBody.create(MediaType.get("text/plain"), responseJson);
           return response.newBuilder().body(myBody).build();
         }
         ResponseBody myBody = ResponseBody.create(MediaType.get("text/plain"), json);
         return response.newBuilder().body(myBody).build();
       }
       return response;
     }
   };
   return interceptor;
 }

其中有兩點需要特別注意一下:

1.ResponseBody的創(chuàng)建ResponseBody.create(MediaType.get("text/plain"), json);是用來根據(jù)json創(chuàng)建的MediaType.get("text/plain")是設(shè)置類型為text。

2.RequestBody調(diào)用string方法之后就不能用了,所以調(diào)用完了之后即便沒有修改也需要重新去創(chuàng)建ResponseBody和ResPonse,否則會報錯。

補(bǔ)充知識:攔截器中通過response返回JSON數(shù)據(jù)

做接口的攔截器時,需在攔截器中通過response返回接口是否允許調(diào)用的JSON信息:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
response.setCharacterEncoding( "UTF-8");
response.setContentType( "application/json; charset=utf-8");
PrintWriter out = null ;
try{
JSONObject res = new JSONObject();
res.put( "success", "false");
res.put( "msg", "xxxx");
out = response.getWriter();
out.append(res.toString());
return false;
}
catch (Excepton e){
e.printStackTrace();
response.sendError( 500);
return false;
}

以上這篇用攔截器修改返回response,對特定的返回進(jìn)行修改操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://blog.csdn.net/a__sen/article/details/101536914

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 天天天综合网 | 99久久精品自在自看国产 | 女主被男主为催奶药h | 亚洲成人99| 国产精品香蕉一区二区三区 | 人人擦| 亚洲国产五月综合网 | 亚洲成人影院在线 | 91频视 | 精品免费久久久久久影院 | 艹逼的视频 | 99精品视频免费观看 | 国产精品久久久久久五月尺 | 国产高清路线一路线二2022 | 午夜神器老司机高清无码 | 成人榴莲视频 | 国产福利兔女郎在线观看 | 国内老司机精品视频在线播出 | ckinese中国男同gay男男 | 亚洲日韩精品欧美一区二区一 | 奇米影视777最新在线 | 成人一区二区免费中文字幕 | www.日日日 | 美女脱了内裤让男桶爽 | 亚洲 欧美 国产 在线观看 | 国产精品日韩在线观看 | 美女被上漫画 | 国产一区二区三区久久精品小说 | 国内精品久久久久影院中国 | 国产黄频在线观看 | 艾秋果冻麻豆老狼 | 99久久精彩视频 | 国产精品毛片高清在线完整版 | 猫扑俩性 | 欧美图片另类小说综合 | 国产裸舞福利资源在线视频 | 免费网址在线观看入口推荐 | 九九99九九精彩 | 亚欧美色| 猫咪色网 | 女子监狱第二季在线观看免费完整版 |