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,返回值保持不变
参考资料: