DWR接口测试的一些想法和实践
作者:网络转载 发布时间:[ 2013/4/17 10:36:17 ] 推荐标签:
整合了以上想法后,我弄了两段程序,一段发信息,一段收信息。
代码不全贴了,只放一些体现思想的代码。
发送post请求:
function getResult(script, method, paras){
var typelist = []
for(var i = 0; i < paras.length; i++){
typelist.push(typeof(paras[i]))
}
var result = "" + engine.getResult(script, method, paras, typelist)
return result
}
..............
public String getResult(String ScriptName, String MethodName, Object[] args,
String[] argsTypes) throws Exception{
String posturl = http://xxxxxxxxxxxxxxxx/dwr/call/plaincall/ + ScriptName + MethodName +".dwr";
StringBuffer paramBuffer = new StringBuffer();
paramBuffer.append("callCount=1
scriptSessionId=${scriptSessionId}187
");
paramBuffer.append("c0-scriptName=").append(ScriptName).append("
c0-methodName=").append(MethodName);
paramBuffer.append("
c0-id=0");
for(int i=0;i<args.length;i++){
paramBuffer.append("
c0-param").append(i).append("=").append(argsTypes[i]).append(":").append(args[i]);
}
paramBuffer.append("
batchId=889209
");
return post(posturl, paramBuffer.toString());
}
接收响应内容:注意这里返回的js对象,到java里面,是sun.org.mozilla.javascript.internal.NativeObject对象,其他简单js类型都有相对应的java对象
public static HashMap<String, Object> getResult(String dwrString) throws Exception{
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
HashMap<String, Object> retMap = new HashMap<String, Object>();
engine.put("inputString", dwrString);
engine.put("map", retMap);
String jsScriptString = "" +
"var re = new RegExp("dwr.engine._remoteHandleCallback\\('\\d+','\\d+',(.*?)\\);", "m")
" +
"var value = inputString.replace(re, "var __result__ = $1")
" +
"eval(value)
" +
"for(var k in __result__) { map.put(k, __result__[k])}";
engine.eval(jsScriptString);
return retMap;
}
public static void justtest(String testString) throws Exception{
HashMap<String, Object> map = getResult(testString);
Double albumId = (Double) map.get("albumId");
System.out.println("albumId : " + albumId.intValue());
NativeObject album = (NativeObject) (map.get("album"));
System.out.println("album.createTime : " + album.get("createTime", null));
System.out.println("album.curl : " + album.get("curl", null));
}

sales@spasvo.com