/** * 解析数据 * @param dis * @return * @throws Exception */ public DataVO decoder(byte[] data) { Stream stream = new MemoryStream(data); BinaryReader reader = new BinaryReader(stream, Encoding.UTF8); DataVO dataVo = new DataVO(); dataVo.ServiceName = readString(reader); // 读取服务名称 dataVo.MethodName = readString(reader); // 读取函数名称 // 读取参数 Object[] param = null; int len = reader.ReadInt32(); if (len == 0) { } else { param = new Object[len]; for(int loop=0; loop<len; loop++) { param[loop] = readAll(reader); } } dataVo.Param = param; return dataVo; }
/** * 解析数据 * @param dis * @return * @throws Exception */ public DataVO decoder(byte[] data) { Stream stream = new MemoryStream(data); BinaryReader reader = new BinaryReader(stream, Encoding.UTF8); DataVO dataVo = new DataVO(); dataVo.ServiceName = readString(reader); // 读取服务名称 dataVo.MethodName = readString(reader); // 读取函数名称 // 读取参数 Object[] param = null; int len = reader.ReadInt32(); if (len == 0) { } else { param = new Object[len]; for (int loop = 0; loop < len; loop++) { param[loop] = readAll(reader); } } dataVo.Param = param; return(dataVo); }
/** * 序列化返回值 * @param data * @param steam * @return * @throws Exception */ public byte[] encode(DataVO data) { MemoryStream stream = new MemoryStream(); BinaryWriter writer = new BinaryWriter(stream); writeUTF(writer, data.ResultStatus); if (data.ResultStatus == "error") { writeUTF(writer, data.ErrorMessage); } else { writeUTF(writer, data.ServiceName); writeUTF(writer, data.MethodName); writeAll(writer, data.Result); } return stream.GetBuffer(); }
/** * 序列化返回值 * @param data * @param steam * @return * @throws Exception */ public byte[] encode(DataVO data) { MemoryStream stream = new MemoryStream(); BinaryWriter writer = new BinaryWriter(stream); writeUTF(writer, data.ResultStatus); if (data.ResultStatus == "error") { writeUTF(writer, data.ErrorMessage); } else { writeUTF(writer, data.ServiceName); writeUTF(writer, data.MethodName); writeAll(writer, data.Result); } return(stream.GetBuffer()); }
protected void Page_Load(object sender, EventArgs e) { byte[] byteData = null; try { if (context == null) { context = ContextUtil.getInstance(Server.MapPath(".")); encrypt = context.getOuterEncrypt(); } if (encoder == null) encoder = ParamEncoder.getInstance(); if (decoder == null) decoder = ParamDecoder.getInstance(); encoder.outEncoder = context.getOuterResolve(); decoder.outDecoder = context.getOuterResolve(); Stream input = Request.InputStream; if (input.CanRead) { byteData = new byte[input.Length]; input.Read(byteData, 0, (int)input.Length); input.Close(); input.Dispose(); // 解密 if (encrypt != null) byteData = encrypt.decrypt(byteData); dataVo = decoder.decoder(byteData); Type serviceCls = context.getService(context.getServiceNameSpace() + "." + dataVo.ServiceName); MethodInfo method = serviceCls.GetMethod(dataVo.MethodName); object result = method.Invoke(System.Activator.CreateInstance(serviceCls), dataVo.Param); dataVo.Result = result; dataVo.ResultStatus = "success"; byte[] resultData = encoder.encode(dataVo); if (encrypt != null) resultData = encrypt.encrypt(resultData); output = Response.OutputStream; output.Write(resultData, 0, resultData.Length); output.Flush(); output.Close(); output.Dispose(); } else { } } catch(Exception exc) { if (dataVo == null && byteData != null) dataVo = decoder.decoder(byteData); if (dataVo == null) dataVo = new DataVO(); dataVo.ResultStatus = "error"; dataVo.ErrorMessage = exc.ToString(); byte[] resultData = encoder.encode(dataVo); if (encrypt != null) resultData = encrypt.encrypt(resultData); output = Response.OutputStream; output.Write(resultData, 0, resultData.Length); output.Flush(); output.Close(); output.Dispose(); } }