加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Webservice返回json设置

发布时间:2020-12-17 00:14:42 所属栏目:安全 来源:网络整理
导读:一 、服务器端设置 ??? 1.修改web.config 在web.config里面的的system.Web节点添加 webServices protocols add name= "HttpPost"/ add name= "HttpGet"/ /protocols /webServices 2.修改XX.asmx.cs [WebService(Namespace = "http://tempuri.org/")] [WebSer

一 、服务器端设置
??? 1.修改web.config
在web.config里面的的system.Web节点添加

<webServices> 
       <protocols> 
         <add name= "HttpPost"/> 
         <add name= "HttpGet"/> 
       </protocols> 
     </webServices>
2.修改XX.asmx.cs
[WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    [System.Web.Script.Services.ScriptService]

//至此,一般函数可在android中可以通过代码返回json数据,返回datatable的函数不可以
3.返回datatable的函数修改
此处需要用到一个函数将datatable转换成json格式

#region dataTable转换成Json格式
        ///     
        /// dataTable转换成Json格式    
        ///     
        ///     
        ///     
        public string DataTableJson(DataTable dt)
        {
            StringBuilder jsonBuilder = new StringBuilder();
            jsonBuilder.Append("{"");
            jsonBuilder.Append(dt.TableName.ToString());
            jsonBuilder.Append("":[");
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                jsonBuilder.Append("{");
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    jsonBuilder.Append(""");
                    jsonBuilder.Append(dt.Columns[j].ColumnName);
                    jsonBuilder.Append("":"");
                    jsonBuilder.Append(dt.Rows[i][j].ToString());
                    jsonBuilder.Append("",");
                }
                jsonBuilder.Remove(jsonBuilder.Length - 1,1);
                jsonBuilder.Append("},");
            }
            jsonBuilder.Remove(jsonBuilder.Length - 1,1);
            jsonBuilder.Append("]");
            jsonBuilder.Append("}");
            return jsonBuilder.ToString();
        }
 
  #endregion
再将原本需要返回datatable的函数新建一个类似函数。此处注意,一定要写
[ScriptMethod(ResponseFormat = ResponseFormat.Xml)],不然android在获取数据时系统又会将转换好的json数据再加一层json。
比如

[WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
        public string HPReadQueryPhone(string strSql,string BD)
        {
            try
            {
                MSQuery dbTable = new MSQuery();
                DataSet dsTable = dbTable.HPReadQuery(strSql,BD);
                dbTable = null;
                if (dsTable.Tables.Count == 0)
                {
                    return "";
                }
                else
                {
                    return DataTableJson(dsTable.Tables[0]);
                }
            }
            catch (System.Exception err)
            {
                ThrowException(err);
                return null;
            }
        }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读