一 、服务器端设置

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. MEF 编程指南(二):定义可组合部件和契约

    可组合部件(Composable Parts)   在 MEF 内部可组合部件是一个可组合单元.可组合部件导出其他可组合部件需要的服务,并且从其他可组合部件导入服务.在 MEF 编程模型中,可组合部件 ...

  2. Android 4.2原生支持从右到左的文字排列格式

    Android 4.1(Jelly Bean)  在TextView和EditText 元素里对“双向文字顺序”提供了有限的功能支持,允许应用程序在编辑和显示字符的时候,能够同时支持从左到右(LTR) ...

  3. UVA 1557 - Calendar Game(博弈dp)

    UVA 1557 - Calendar Game 题目链接 题意:给定一个日期,两个人轮流走,每次能够走一月或者一天,问最后谁能走到2001.11.4这个日子 思路:记忆化搜索,对于每一个日期,假设下 ...

  4. ElasticSearch使用

    安装之前,请参考https://github.com/richardwilly98/elasticsearch-river-mongodb根据你的MongoDB版本号决定需要的elasticsearc ...

  5. iOS开发——图形与动画篇OC篇&图层基本上动画

    图层的一些基本动画效果 #define kRadianToDegrees (radian) (radian * 180.0) / (M_PI) //闪烁 [self.testView.layer ad ...

  6. 提升 composer 的执行速读

    常常遇到 php composer.phar update 等待一二十分钟还没有更新完成的情况. 提升速读的方法: 1. 升级PHP 版本到5.4以上 2. 删除文件夹Vender(或者重命名),之后 ...

  7. MySQL内存----使用说明全局缓存+线程缓存) 转

    MySQL内存使用说明(全局缓存+线程缓存) 首先我们来看一个公式,MySQL中内存分为全局内存和线程内存两大部分(其实并不全部,只是影响比较大的 部分): per_thread_buffers=(r ...

  8. 损失函数(loss function) 转

    原文:http://luowei828.blog.163.com/blog/static/310312042013101401524824 通常而言,损失函数由损失项(loss term)和正则项(r ...

  9. NetBeans 安装Android 开发环境

    基本的开发环境都是Eclipse + Android SDK + Android plugin for Eclipse NetBeans下开发Android的所需要的基本条件:NetBeans(包含J ...

  10. vim中taglist使用

    转载:http://www.cnblogs.com/mo-beifeng/archive/2011/11/22/2259356.html 本节所用命令的帮助入口: :help helptags :he ...