一 、服务器端设置

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. VC中监测函数运行时间(一)—分钟,秒,毫秒

    //myTimer.h // [10/16/2013 Duan Yihao] #pragma once #include "StdAfx.h" ////////////////// ...

  2. 栈的应用1——超级计算器(中缀与后缀表达式)C语言

    这里要学的程序主要用来实现一个功能——输入表达式输出结果,也就是一个计算器.效果如下: 这个程序主要有两个步骤:1.把中缀表达式转换为后缀表达式:2.计算后缀表达式的结果. 首先先明白几个问题: 1. ...

  3. IE8不显示字体图标

    bootstrap流行,随着自带的字体图标也火起来了.美丽的字体系统中没有.制作成字体文件,下载到本地.浏览美丽的网页哦. 在项目中遇到有些IE8显示不了,原因是IE8下设置了禁止字体下载

  4. 彩票APP将演绎“快鱼吃慢鱼”的发展轨迹

    思科CEO钱伯斯有句名言,叫"快鱼吃慢鱼",他觉得"在Internet经济下,大公司不一定打败小公司,可是快的一定会打败慢的."对此观点,笔者表示部分认同,首先 ...

  5. [Angular 2] Value Providers & @Inject

    Dependecies aren’t always objects created by classes or factory functions. Sometimes, all we really ...

  6. Type mytableview does not confirm to portocol UITableViewDataResource

    继承UITableViewDataSource报上面这个总是,是重写协议时写错了 override func numberOfRowsInSection(section: Int) -> Int ...

  7. 写了个SharedPreferences的工具类(带加密)

    /* * Copyright (C) 2014 Jason Fang ( ijasonfang@gmail.com ) * * Licensed under the Apache License, V ...

  8. Apache 学习笔记(心得)

    http://blog.csdn.net/btbtd/article/details/288027#2 # 分类:# 01.常规设置# 02.虚拟主机# 03.<Directory> + ...

  9. rabbitmq——用户管理

    安装最新版本的rabbitmq(3.3.1),并启用management plugin后,使用默认的账号guest登陆管理控制台,却提示登陆失败. 翻看官方的release文档后,得知由于账号gues ...

  10. couldn't set tty to ppp discipline invalid argument

    参考: http://pptpclient.sourceforge.net/howto-diagnosis.phtml#conventions http://blog.chinaunix.net/ui ...