WebService使用JSON格式传递笔记+JQuery测试

简介: 原文 WebService使用JSON格式传递笔记+JQuery测试 因为一些因素,必须改写WebService,很传统,但是很多公司还在用.. 因为XML 的关系,不想让他传递数据的时候过度肥大,所以我必须要尽量干净的JSON.

原文 WebService使用JSON格式传递笔记+JQuery测试

  • 因为一些因素,必须改写WebService,很传统,但是很多公司还在用.. 因为XML 的关系,不想让他传递数据的时候过度肥大,所以我必须要尽量干净的JSON.. 于是开始我的改写旅程..   首先,网络上好多好多好多文件,可能因为状况不同,测试过许多也让我搞混很多次.. 最后有找到答案..笔记一下..   首先我开了三个不同的WebMethod 来测试三种不同的输出..   GetUserInfoString –取得字符串 GetOneUserInfo - 取得一个对象 GetUsers - 取得对象们

     

    01. using System.Collections.Generic;
    02. using System.Web.Script.Services;
    03. using System.Web.Services;
    04.  
    05. namespace JsonServiceSample
    06. {
    07.  
    08. public class User
    09. {
    10. public string Name { get; set; }
    11. public int Age { get; set; }
    12. }
    13.  
    14.  
    15. [WebService(Namespace = "", Description = "For Donma Test")]
    16. [System.ComponentModel.ToolboxItem(false)]
    17. [ScriptService]
    18. public class Service1 : WebService
    19. {
    20.  
    21.  
    22. [WebMethod]
    23. [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    24. public string GetUserInfoString(string name, int age)
    25. {
    26. return name + "," + age;
    27. }
    28.  
    29.  
    30. [WebMethod]
    31. [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    32. public User GetOneUserInfo(string name, int age)
    33. {
    34. return (new User { Name = name, Age = age });
    35.  
    36. }
    37.  
    38.  
    39. [WebMethod]
    40. [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    41. public User[] GetUsers(string name, int age)
    42. {
    43. List<User> res = new List<User>();
    44. res.Add(new User { Name = name + "1", Age = age });
    45. res.Add(new User { Name = name + "2", Age = age });
    46.  
    47. return res.ToArray();
    48. }
    49.  
    50. }
    51. }

    再来一个重点,在每一个Method 上方我都会加上www.it165.net

    [WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)]

    因为基于有时候我会需要使用GET 方式传递 所以我在Web Config 中加入 在system.web 中加入

    <webServices> <protocols> <add name="HttpGet"/> <add  name="HttpPost" /> <add name="Documentation" /> </protocols> </webServices>   Web.Config 全文:

     

    01. <?xml version="1.0"?>
    02.  
    03. <!--
    04. For more information on how to configure your <a href="http://www.it165.net/pro/webasp/" target="_blank" class="keylink">ASP</a>.NET application, please visit
    06. -->
    07.  
    08. <configuration>
    09. <configSections>
    10. <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
    11. <section name="JsonServiceSample.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    12. </sectionGroup>
    13. </configSections>
    14. <system.web>
    15. <compilation debug="true" targetFramework="4.0" />
    16. <httpHandlers>
    17. </httpHandlers>
    18.  
    19. <webServices>
    20. <protocols>
    21. <add name="HttpGet"/>
    22. <add  name="HttpPost" />
    23. <add name="Documentation" />
    24. </protocols>
    25. </webServices>
    26. </system.web>
    27.  
    28. <applicationSettings>
    29. <JsonServiceSample.Properties.Settings>
    30. <setting name="JsonServiceSample_JTestService_Service1" serializeAs="String">
    31. <value>http://localhost:5403/Service1.asmx</value>
    32. </setting>
    33. </JsonServiceSample.Properties.Settings>
    34. </applicationSettings>
    35. </configuration>

    这样试跑一下

     

    \  

    奇怪为什么不是JSON ,别紧张…我们继续使用 JQuery 来呼叫看看.. JQuery Code :  

     

    01. <input type="button" id="ipt1" value="test" />
    02.  
    03. <script type="text/javascript">
    04.  
    05. function GetInfo() {
    06. var $res;
    07. $.ajax({
    08. type: "POST",
    09. url: "Service1.asmx/GetOneUserInfo",
    10. contentType: "application/json; charset=utf-8",
    11. async: false,
    12. cache: false,
    13. dataType: 'json',
    14. data: "{name:'当麻',age:29}",
    15. success: function (data) {
    16. if (data.hasOwnProperty("d")) {
    17. $res = data.d;
    18. }
    19. else
    20. $res = data;
    21. }
    22. });
    23. return $res;
    24. }
    25.  
    26.  
    27. $('#ipt1').click(function () {
    28. var res = GetInfo();
    29. alert(res.Name);
    30. });
    31.  
    32.  
    33. </script>

    按钮按下去之后 我让他呼叫 GetOneUserInfo 这 method 并且使用POST 看下结果..

     

    \  

    恩恩..的确是JSON, 但是多了一个 d  跟 __type 基本上  __type 不要去动他是不影响,但是  d 这东西必须得处理.. 进行改写..实测过上面三种不同的回传值..都 OK~~ 这样对于传统的 WebService Reference 呼叫  WebService 不会有影响.. 也可以透过JQuery 呼叫传递透过JSON…

目录
相关文章
|
JSON 算法 vr&ar
目标检测笔记(五):查看通过COCOEvaluator生成的coco_instances_results.json文件的详细检测信息,包含AP、AR、MR和DR等
本文介绍了如何使用COCO评估器通过Detectron2库对目标检测模型进行性能评估,生成coco_instances_results.json文件,并利用pycocotools解析该文件以计算AP、AR、MR和DR等关键指标。
1377 1
目标检测笔记(五):查看通过COCOEvaluator生成的coco_instances_results.json文件的详细检测信息,包含AP、AR、MR和DR等
|
存储 数据可视化 测试技术
一个测试工程师的实战笔记:我是如何在Postman和Apipost之间做出选择的?
优秀的API测试工具应该具备: 分层设计:既有可视化操作,也开放代码层深度定制 场景感知:自动识别加密需求推荐处理方案 协议包容:不强迫开发者为了不同协议切换工具 数据主权:允许自主选择数据存储位置
502 7
|
机器学习/深度学习 JSON 算法
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-Seg模型进行图像分割的完整流程,包括图像分割的基础知识、YOLOv5-Seg模型的特点、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。通过实例代码,指导读者从自定义数据集开始,直至模型的测试验证,适合深度学习领域的研究者和开发者参考。
7210 3
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
|
测试技术
自动化测试项目实战笔记(三):测试用户注册(验证码错误,成功,出现弹框时处理)
本文是关于自动化测试项目实战笔记,主要介绍了如何测试用户注册功能,包括验证码错误、注册成功以及弹框处理的测试步骤和代码实现。
517 2
自动化测试项目实战笔记(三):测试用户注册(验证码错误,成功,出现弹框时处理)
|
机器学习/深度学习 JSON 算法
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
本文介绍了DeepLab V3在语义分割中的应用,包括数据集准备、模型训练、测试和评估,提供了代码和资源链接。
4862 0
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
|
机器学习/深度学习 弹性计算 自然语言处理
前端大模型应用笔记(二):最新llama3.2小参数版本1B的古董机测试 - 支持128K上下文,表现优异,和移动端更配
llama3.1支持128K上下文,6万字+输入,适用于多种场景。模型能力超出预期,但处理中文时需加中英翻译。测试显示,其英文支持较好,中文则需改进。llama3.2 1B参数量小,适合移动端和资源受限环境,可在阿里云2vCPU和4G ECS上运行。
1337 1
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
459 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
机器学习/深度学习 并行计算 数据可视化
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用PaddleClas框架完成多标签分类任务,包括数据准备、环境搭建、模型训练、预测、评估等完整流程。
1479 0
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
|
机器学习/深度学习 数据采集 算法
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
这篇博客文章介绍了如何使用包含多个网络和多种训练策略的框架来完成多目标分类任务,涵盖了从数据准备到训练、测试和部署的完整流程,并提供了相关代码和配置文件。
688 0
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
|
测试技术 数据安全/隐私保护 Python
自动化测试项目实战笔记(四):测试用户登录(账号密码错误,成功,出现弹框等情况)
本文介绍了使用Selenium进行自动化测试时如何测试用户登录的不同情况,包括账号密码错误、登录成功以及处理登录时出现的弹框,并提供了相应的Python代码实现。
927 0
自动化测试项目实战笔记(四):测试用户登录(账号密码错误,成功,出现弹框等情况)

热门文章

最新文章