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

转载于:https://www.cnblogs.com/panxiaoming/p/6023963.html

可以通过反射机制获取 Bean 下的所有方法及对应的请求参数返回值和注解。以下是一种实现方法: ```java // 获取 Bean 对象 Object bean = applicationContext.getBean("beanName"); // 获取 Bean 类型 Class<?> beanClass = bean.getClass(); // 获取所有方法 Method[] methods = beanClass.getDeclaredMethods(); for (Method method : methods) { // 获取方法名称 String methodName = method.getName(); // 获取方法参数类型 Class<?>[] parameterTypes = method.getParameterTypes(); // 获取方法返回值类型 Class<?> returnType = method.getReturnType(); // 获取方法注解 Annotation[] annotations = method.getDeclaredAnnotations(); // 输出方法信息 System.out.println("方法名称:" + methodName); System.out.println("方法参数类型:" + Arrays.toString(parameterTypes)); System.out.println("方法返回值类型:" + returnType); System.out.println("方法注解:" + Arrays.toString(annotations)); } ``` 以上代码中,我们首先通过 applicationContext.getBean 方法获取了 Bean 对象,然后通过反射机制获取了 Bean 的类型,并通过 getDeclaredMethods 方法获取了所有方法。在遍历每个方法时,我们可以通过 getName 方法获取方法名称,通过 getParameterTypes 方法获取方法参数类型,通过 getReturnType 方法获取方法返回值类型,通过 getDeclaredAnnotations 方法获取方法注解,并将这些信息输出到控制台上。 需要注意的是,由于某些方法可能没有注解,因此需要判断 annotations 是否为 null。另外,如果某些方法的参数类型和返回值类型为复杂类型,例如 List、Map 等,需要将类型转换为字符串输出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值