一 、服务器端设置

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;             }         }

二、android代码写法

try{   String SERVER_URL = "http://192.168.10.33:81/MobileService/MSServiceQuery.asmx/HPReadQueryPhone";    HttpPost request = new HttpPost(SERVER_URL); // 根据内容来源地址创建一个Http请求             request.addHeader("Content-Type", "application/json; charset=utf-8");//必须要添加该Http头才能调用WebMethod时返回JSON数据                      JSONObject jsonParams=new JSONObject(); //         jsonParams.put("strdate", "1"); //         jsonParams.put("aa", "1");          jsonParams.put("strSql", "select * from RRUser");//传参,如果想传递两个参数则继续添加第二个参数jsonParams.put("param2Name","param2Value")          jsonParams.put("BD", "27");          HttpEntity bodyEntity =new StringEntity(jsonParams.toString(), "utf8");//参数必须也得是JSON数据格式的字符串才能传递到服务器端,否则会出现"{'Message':'strUserName是无效的JSON基元'}"的错误          Log.i("ex",jsonParams.toString());          request.setEntity(bodyEntity);          HttpResponse httpResponse = new DefaultHttpClient().execute(request); // 发送请求并获取反馈          ShowMessage(httpResponse.getStatusLine().toString());          if(httpResponse.getStatusLine().getStatusCode()==200)          {                    String result = EntityUtils.toString(httpResponse.getEntity());          Log.i("ex", result);          ShowMessage(result);          if(!result.equals(""))          {           try           {            JSONArray   jsonObjs = new JSONObject (result).getJSONArray("Table");              JSONObject jsonObj = ((JSONObject)jsonObjs.opt(0));                String username=jsonObj.getString("UserCname");                ShowMessage(username);

Log.i("ex",String.valueOf(jsonObjs.length())+"aa");

}           catch(JSONException e)           {            ShowMessage("数据错误");           }          }                 }          else          {           ShowMessage("网络传输错误");          }   }   catch(Exception e)   {    Log.i("ex", e.getMessage());   }

asp.net中webservice与android的json数据交互方式设置的更多相关文章

  1. android基础---->JSON数据的解析

    上篇博客,我们谈到了XML两种常用的解析技术,详细可以参见我的博客(android基础---->XMl数据的解析).网络传输另外一种数据格式JSON就是我们今天要讲的,它是比XML体积更小的数据 ...

  2. Android 之 json数据的解析(jsonReader)

    json数据的解析相对而言,还是比较容易的,实现的代码也十分简单.这里用的是jsonReade方法来进行json数据解析. 1.在解析之前,大家需要知道什么是json数据. json数据存储的对象是无 ...

  3. EasyUI学习笔记(1)----Tree控件实现过程中.NET下无法访问json数据的解决办法

    直接调用官网的Demo中的方法 , 将json数据存储在同目录下,但是在运行之后树没有出现,用FireBug调试,错误如下 不允许访问json数据,刚开始以为是权限不够,然后又给解决方案所在的文件夹设 ...

  4. 使用Servlet根据浏览器request的get方法获取值,将磁盘中与之对应的json数据删除的方法

    package com.swift; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStrea ...

  5. ASP.NET中WebService的创建和部署以及通过反射动态调用WebService

    一.在ASP.NET中创建WebService 首先我们先创建一个ASP.NET Web 应用程序,此处我们以VS2017为例 点击新创建的项目,右键添加新建项,选择Web服务,输入名称后点击添加 这 ...

  6. ASP.NET中WebService的两种身份验证方法

    一.通过SOAP Header身份验证 此方法是通过设置SOAP Header信息来验证身份,主要通过以下几步: 1.在服务端实现一个SOAP Header类 public class Credent ...

  7. Android 实现Json数据解析,并进行应用!

    从网站上获取数据然后再客户端进行解析是常见的数据交互.下面是常用的一些接口网址: webservice工厂接口 http://www.36wu.com 快递查询接口http://webservice. ...

  8. Android系列---JSON数据解析

    您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态. 如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦 如果您对文章内 ...

  9. Android - 服务器json数据交互.

    一,服务器端 服务器端使用的是Servlet,封装json对象使用的 'json-lib-2.2.2-jdk15.jar,ezmorph-1.0.4.jar,commons-logging-1.1.j ...

随机推荐

  1. wikioi 3027 线段覆盖 2

    题目描述 Description 数轴上有n条线段,线段的两端都是整数坐标,坐标范围在0~1000000,每条线段有一个价值,请从n条线段中挑出若干条线段,使得这些线段两两不覆盖(端点可以重合)且线段 ...

  2. ALV的报表对用户定义格式的控制(ALV I_SAVE)

    很多ALV的报表都需要手动的进行设置格式以使数据看上去更有意义和条理,如果每次进来都重新操作一遍是很烦人的,所以SAP有提供了一个保存格式的功能,保存格式可以是 '缺省设置' 和 '特定用户' 两种 ...

  3. 机器学习笔记之遗传算法(GA)

    遗传算法是一种大致基于模拟进化的学习方法,假设常被描述为二进制串.在遗传算法中,每一步都根据给定的适应度评估准则去评估当前的假设,然后用概率的方法选择适应度最高的假设作为产生下一代的种子.产生下一代的 ...

  4. 【转】Android真机抓屏- Android Screen Monitor

    http://www.cnblogs.com/xiaofeixiang/p/4086092.html 一般运行Android应用程序有两种方式一种是设置Android虚拟设备模拟器,通过Android ...

  5. JTextField限制 输入数字

    貌似有很多方法,先记了再说... 1.限制输入数字 用法 textfield.setDocument(new IntegerDocument()); class IntegerDocument ext ...

  6. 硝烟中的scrum学习笔记 - 怎样制定Sprint计划(Plan Meeting)

    1. 如何估算我们这个sprint能做多少个故事点 1) 本能反应 2) 生产率计算  估算生产率/实际生产率  看看团队的历史,看看他们在过去几个sprint里的生产率是多少  然后假定在下一个sp ...

  7. URAL 1776 C - Anniversary Firework DP

    C - Anniversary FireworkTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/c ...

  8. Android应用程序框架之无边界设计意图

    Android的应用框架的外特性空间的描述在SDK文档有十分清楚的描述,Android应用的基本概念,组件生命周期等等有详细的描述.在外特性空间中,Android提供了Activity,Service ...

  9. visualsvn server 报错 can't read file "current":End of file out

    需要删除文件:Repositories\ProjectName\db\revprops\X 需要修改文件:repository/db/txn_current.repository/db/current ...

  10. 通过缓存数据库结果提高PHP性能(转)

    众所周知,缓存数据库查询的结果可以显著缩短脚本执行时间,并最大限度地减少数据库服务器上的负载.如果要处理的数据基本上是静态的,则该技术将非常有效.这是因为对远程数据库的许多数据请求最终可以从本地缓存得 ...