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

服務(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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: a级片在线观看免费 | 77色视频在线 | 国产精品久久久久影视不卡 | 白白国产永久免费视频 | 99网站在线观看 | 我的年轻漂亮继坶三级 | 久久国产精品无码视欧美 | 亚洲精品色图 | 精品高潮呻吟99AV无码视频 | 闺蜜高h | 丰满岳乱妇在线观看视频国产 | 亚洲欧美国产精品久久久 | 2022最新国产在线 | 国产美女屁股直流白浆视频无遮挡 | 色久网 | 女人c交zzzooo在线观看 | 欧美一级欧美三级在线 | 国产午夜精品一区二区三区 | 天堂a视频 | 国产欧美日韩精品一区二区三区 | 国内精品久久久久影院网站 | 福利一区三区 | 国产成人无精品久久久久国语 | www.亚洲视频.com| 日韩欧美在线视频一区二区 | 亚洲www美色 | 亚洲人成激情在线播放 | 国产欧美日韩亚洲精品区2345 | 含羞草国产亚洲精品岁国产精品 | 国产精品成人va在线观看 | 黑人video粗暴日本 | 国产爽视频 | 国产三级精品久久三级国专区 | jzzjzz视频免费播放 | 四虎成人免费观看在线网址 | 成人a级特黄毛片 | 无套日出白浆在线播放 | 九九精品国产兔费观看久久 | 女子张腿让男人桶免费 | 日本最新免费二区 | 国产99久久精品一区二区 |