我正在编写一个fiddler脚本来修改服务器的响应。 以下是代码:
static function OnBeforeResponse(oSession: Session) {
if (m_Hide304s && oSession.responseCode == 304) {
oSession["ui-hide"] = "true";
}
if (oSession.host == "localhost:8000") {
var sbody = oSession.GetResponseBodyAsString();
var oJSON1:Fiddler.WebFormats.JSON.JSONParseResult=Fiddler.WebFormats.JSON.JsonDecode(sbody);
//some junk modification
var value = oJSON1.JSONObject["n4"];
value + =1;
oJSON1.JSONObject["n4"] = value;
// Convert back to a byte array
var modBytes = Fiddler.WebFormats.JSON.JsonEncode(oJSON1.JSONObject);
// Convert json to bytes, storing the bytes in request body
var mod = System.Text.Encoding.UTF8.GetBytes(modBytes);
oSession.responseBody = mod;
}
}
服务器发送了正确的JSON响应:
{"n4":"9pjjvezwRVUIvycpsXco4g==","eB":[92,684,"dLzPnLRYquJ7b7b"]}
我在OnBeforeResponse
函数中捕获的修改并将其发送给客户端。
在OnBeforeResponse
函数中:
var sbody = oSession.GetResponseBodyAsString();
给了我正确的JSON响应,如上所述, 但是当我使用
将JSON转换回字节数组时var modBytes = Fiddler.WebFormats.JSON.JsonEncode(oJSON1.JSONObject);
此时我的JSON响应已逆转
{"eB":[92,684,"dLzPnLRYquJ7b7b"], "n4":"9pjjvezwRVUIvycpsXco4g==1"}
我无法弄清楚我做错了什么。请帮帮我。完全是Fiddler和JSON的新手。