让ASMX支持Json格式的返回数据「建议收藏」

让ASMX支持Json格式的返回数据「建议收藏」默认情况下,ASMX的Web服务返回soap格式的数据ajax调用一般使用Json格式的数据。要支持Json格式的数据返回值,可以取消Web服务类前面的ScriptService注释。这样,该Web服务就可以支持ajax调用,参数和返回类型都是Json格式了。但是,如果你在浏览器中测试该Web服务,会发现返回的仍然是xml格式的。这是因为Web服务会自动根据请求的数据类型返回不同的数据格…

大家好,又见面了,我是你们的朋友全栈君。

默认情况下,ASMX的Web服务返回soap格式的数据

ajax调用一般使用Json格式的数据。要支持Json格式的数据返回值,可以取消Web服务类前面的 ScriptService注释。这样,该Web服务就可以支持ajax调用,参数和返回类型都是Json格式了。

但是,如果你在浏览器中测试该Web服务,会发现返回的仍然是xml格式的。这是因为Web服务会自动根据请求的数据类型返回不同的数据格式。使用浏览器发出请求时,没有指定数据格式,仍然会使用xml格式。如果需要json格式的结果,可以使用jquery中的ajax调用。

例1:使用ajax调用

Web服务代码:

    [System.Web.Script.Services.ScriptService]
    public class WebServiceHello : System.Web.Services.WebService
    {

        [WebMethod]

        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public string[] UserDetails()
        {

            return new string[] { “abc”, “def” };
        }
    }

网页的javascript脚本:

        function hello() {

            $.ajax({

                url: “WebServiceHello.asmx/UserDetails”,
                contentType: “application/json; charset=utf-8”,
                type: “POST”,
                dataType: “json”,
                data: “{}”,
                success: function(json) {

                    alert(json.d);
                },
                error: function(x, e) {

                    alert(x.responseText); ;
                },
                complete: function(x) {

                    alert(x.responseText);
                }
            });
        }
        hello();

如果是在其它应用程序中调用这个Web服务器,那么要在请求中添加一个Header:

Content-Type: application/json

例:使用curl命令以json格式调用

curl -d “” “http://localhost:30568/WebServiceHello.asmx/UserDetails” -H “Content-Type: application/json”

返回的内容如下:

{“d”:[“abc”,”def”]}

注意:结果会封装在名为d的数据成员中。目前我没有办法去掉这个封装。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141683.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 利用 SSDP 协议生成 100 Gbps DDoS 流量的真相探秘「建议收藏」

    利用 SSDP 协议生成 100 Gbps DDoS 流量的真相探秘「建议收藏」原文地址https://www.4hou.com/technology/5979.html上个月我们分享过一些反射型DDoS攻击数据,SSDP攻击的平均大小是12Gbps,我们记录的最大的反射式DDoS攻击是:1.30Mpps(每秒数百万个数据包)2.80Gbps(每秒数十亿位)3.使用940k反射器的IP几天前,我们注意到了一个不寻常的SSDP超级放大情况的发生…

    2022年10月10日
    3
  • pycharm一键调整代码格式_pycharm community怎么改成中文

    pycharm一键调整代码格式_pycharm community怎么改成中文用pycharm真的很久了,一直是英文的IDE,还是感到不太方便。在网上找如何将pycharm汉化,结果搜出来的结果都是下载补丁?或者是激活成功教程版?风险很大。于是自己摸索出了这个官方汉化版的操作,绝对安全,绝对简便!!打开settings(设置),然后在里面搜索plugins(插件)。 进入界面之后,点击中上方的marketplace(市场),搜索”chinese”。 弹出来的第一个,作者是JetBrains官方出的插件,点击安装。 重启之后,界面就变成下图的汉化版了!!超级方便,超级安全!!

    2022年8月25日
    7
  • kubernetes教程入门_centos7搭建k8s集群

    kubernetes教程入门_centos7搭建k8s集群文章目录第一章 kubernetes简介01 部署方式的演变容器部署的编排问题:解决以上问题的容器编排管理工具:02 k8s简介主要功能:03 k8s组件04 k8s概念第二章 k8s集群环境搭建05 环境规划**集群类型:**安装方式:主机规划:06 环境搭建 主机安装07 环境初始化1.检查centos版本2.主机名解析3.时间同步4.禁用防火墙服务iptables和firewalld5.禁用linux的安全服务selinux6.禁用swap分区7.修改linux内核参数8.配置ipvs功能9.重启系统

    2022年8月11日
    9
  • c语言字符数组初始化的三种方式_c语言赋值字符串

    c语言字符数组初始化的三种方式_c语言赋值字符串C语言中字符数组的初始化与赋值,字符串相关函数!1.字符数组初始化在C语言中,字符串是当做字符数组来处理的;所以字符串有两种声明方式,一种是字符数组,一种是字符指针。(1)直接逐个初始化字符数组:字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。charstr[10]={‘I’,”,’a’,’m’,”,‘h’,’a’,’p’,’p’…

    2022年8月30日
    4
  • setLayout()和GridData的设置[通俗易懂]

    setLayout()和GridData的设置[通俗易懂]总结:(1)setLayout()是设置界面布局,如界面有几行几列如jf.setLayout(newGridLayout(2,1));//容器共有2行1列。GridLayoutlayout=newGridLayout();layout.numColumns=4;//设置容器的列数layout.makeColumnsEqualWidth=false;//设…

    2022年5月10日
    37
  • pycham2021版本激活码【在线破解激活】

    pycham2021版本激活码【在线破解激活】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    52

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号