FiddlerScript修改特定请求参数下的返回值

使用场景:

     api/Live/GetLiveList接口:

(1)Type为1,接口返回直播列表

(2)Type为2,接口返回回放列表

现在想修改直播列表的返回值

思路:

     利用FiddlerScript获取请求参数,请求中有指定参数时修改返回值。

实现:

    FiddlerScript的OnBeforeResponse中增加处理代码:

 

 1 if (oSession.fullUrl.Contains("http://xxx.xxxxxx.com/api/Live/GetLiveList"))
 2         {
 3             
 4             // 获取Response Body、Request Body中JSON字符串,转换为可编辑的JSONObject变量
 5             var responseStringOriginal =  oSession.GetResponseBodyAsString();            
 6             var responseJSON = Fiddler.WebFormats.JSON.JsonDecode(responseStringOriginal);
 7 
 8             var requestStringOriginal=oSession.GetRequestBodyAsString();
 9             var requestJSON = Fiddler.WebFormats.JSON.JsonDecode(requestStringOriginal);
10             
11             
12             if(requestJSON.JSONObject['type']==1){ //请求参数中,若type为1,对返回值做如下修改
13 
14                 // 修改字段
15                 responseJSON.JSONObject['Message'] = "获取成功修改后后";
16                 responseJSON.JSONObject['Info']['LiveInfoList'][0]['LiveName']="直播测试5修改返回值后";
17  
18                 // 添加字段
19                 var teacherinfo= '[{"name":"Wang", "title":"senior"},'+
20                 '{"name":"Li", "title":"senior"}]';
21                 responseJSON.JSONObject['teacherinfo'] = Fiddler.WebFormats.JSON.JsonDecode(teacherinfo).JSONObject ;
22             
23                 // 重新设置Response Body
24                 var responseStringDestinal = Fiddler.WebFormats.JSON.JsonEncode(responseJSON.JSONObject);
25                 oSession.utilSetResponseBody(responseStringDestinal);
26             }
27         }
28 }

效果:

 

Type=1,修改前的返回值

 

Type=1,修改后的返回值

 

Type=2,返回值保持不变 

参考资料:

http://www.cnblogs.com/liumamxu/p/5118055.html

posted @ 2016-11-02 18:19  冷风吹1016  阅读(2400)  评论(0编辑  收藏  举报