基于ASP.NET 3.5 Web Service的JSON扩展应用
;
serializer.WriteObject(ms, SerializationTarget);
string Product = Encoding.Default.GetString(ms.ToArray());
ms.Close();
return Product;
}
private object JSONDeserialize(string DeserializationTarget, Type TargetType)
{
MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(DeserializationTarget));
DataContractJsonSerializer serializer = new DataContractJsonSerializer(TargetType);
object Product = serializer.ReadObject(ms);
ms.Close();
return Product;
}
您需要使用的System.Runtime.Serialization.Json名字空间,这将需要提及 System.Runtime.Serialization , System.ServiceModel ,和System.ServiceModel.Web 。 最后,我们只需要在InterceptJSONMethodRequest功能完成待办事项。代码如下: … else { Type Service = this.GetType(); MethodInfo JSONMethod = Service.GetMethod(ServiceMethodName); if (JSONMethod == null) return; ParameterInfo[] JSONMethodParameters = JSONMethod.GetParameters(); object[] CallParameters = new object[JSONMethodParameters.Length]; for (int i = 0; i < JSONMethodParameters.Length; i++) { ParameterInfo TargetParameter = JSONMethodParameters[i]; string RawParameter = Context.Request.Form[TargetParameter.Name]; if (RawParameter == null || RawParameter == "") RawParameter = Context.Request.QueryString[TargetParameter.Name]; if (RawParameter == null || RawParameter == "") throw new Exception("Missing parameter " + TargetParameter.Name + "."); CallParameters[i] = JSONDeserialize(RawParameter, TargetParameter.ParameterType); } object JSONMethodReturnValue = JSONMethod.Invoke(this, CallParameters); string SerializedReturnValue = JSONSerialize(JSONMethodReturnValue); Context.Response.Write(SerializedReturnValue); } … 我们目前的Web服务类类型,该类型的“this”不是指的EnhanceWebService,但实际的Web服务类将在 以后的时间创建,其中将有各种Web方法。然后,我们开始获取信息的方法被调用,如果不存在将发生错 误便退出而终止响应,从而使ASP.NET Web服务处理程序继续进行。从方法的信息,我们将通过迭代获得 其参数列表。 对于每个参数,我们期待双方的QueryString和form收集具有相同名称的的变量。我们可以通过两种方 式检查这两个参数:如果没有变量存在到某一特定的参数,那么这个参数是没有提供的,我们抛出一个异 常,在这里只是一个服务器端异常;否则,我们将其值化的对象,以后在储存。一并行化所有参数,我们 使用目标的方法和获得返回值。 当然,在这一点上,所有需要做的是连续的返回值,并完成相应。 这是全部的EnhancedWebService 类。现在,您可以解释任何Web方法的JSON同一条直线上,例如: public class MyService : EnhancedWebService { public MyService () { } [JSONMethod] [WebMethod] public string[] MethodThatSupportsJSON(string Parameter) { return new string[] { Parameter, Parameter, Parameter }; } [WebMethod] public string[] MethodThatDoesNotSupportJSON(st |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |