zoukankan      html  css  js  c++  java
  • android调用asp.net webservice,返回json结构

    --asp.net web service

    using System;
    using System.Collections;
    using System.Linq;
    using System.Web;
    using System.Web.Services;
    using System.Web.Services.Protocols;
    using System.Xml.Linq;
    using System.Web.Services.Description;
    using Resin;
    using System.Data;
    using System.Data.SqlClient;
    using System.Configuration;
    using System.Web.Script.Services; 
    using System.Web.Script.Serialization;
    using Jayrock.Json;
    using Jayrock.JsonRpc;
    using Jayrock.JsonRpc.Web;
    using Jayrock.Configuration;
    using Jayrock.Json.Conversion;


    /// <summary>
    ///AndroidService 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    //若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
    [System.ComponentModel.ToolboxItem(false)]
    [System.Web.Script.Services.ScriptService] 

    public class AndroidService : System.Web.Services.WebService
    {
        private static JavaScriptSerializer serializer = new JavaScriptSerializer();
        public AndroidService()
        {

            //如果使用设计的组件,请取消注释以下行
            //InitializeComponent();
        }

        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }
        [WebMethod]
        public string getArray() { return serializer.Serialize(new string[] { "A", "B", "c" }); }

        [WebMethod]
        public string getObject() { var json = new { RS = "OK" }; return serializer.Serialize(json); }

        /// <SUMMARY>    
        /// Client 端傳 JSON 格式, Server 端解    
        /// </SUMMARY>        
        ///
      [WebMethod]    
      public string setObject(string json)
      {        
          JsonObject obj = JsonConvert.Import(typeof(JsonObject), json) as JsonObject;
          string name;        
          string age;        
          try {            
              name = obj["name"].ToString();            
              age = obj["age"].ToString();        
          }        
          catch (Exception) {                        
              throw;        
          }               
          var rs = new{RS = "OK" ,name = name,age = age};
          return serializer.Serialize(rs);    
      }

        [WebMethod]
        public string Add(int x, int y)
        {
            int z = x + y; return z.ToString();
        }
        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public string Login(string UserName, string Pwd)
        {
            string returnUrl;
            string loginname = UserName.Trim().Replace("-", "_");//防注入
            string pws = Pwd.Trim().Replace("-", "_");
            string mac = "";

            //如果当前用户是mac认证用户txtMAC
            string CliectIP = CommonFunction.GetIP();
            string ClientArea = CommonFunction.GetClientArea(CliectIP);

            SqlDataReader dr = UserBase.LoginCheck(loginname, pws, CliectIP, mac);
            if (dr.Read())// a.LoginName,a.LimitString,a.EmployeeID,a.ID,b.dmmc
            {
                string Loginname = dr.GetString(0).Trim();

                switch (Loginname)
                {
                    case "ERROR":
                        {
                            //MessageBox.Show(this, "密码或用户名错误,请重新输入,如果您忘记了密码,请点击[忘记密码]使用手机找回密码!");
                            CommonFunction.USP_Insert_SYS_OperateLog(loginname, "登陆", "登陆失败", CliectIP, "密码错误," + pws + ",登陆地区:" + ClientArea);
                            break;
                        }
                    case "LOCK":
                        {
                            //MessageBox.Show(this, "当前用户已经被锁定,请联系管理员问明原因!");
                            CommonFunction.USP_Insert_SYS_OperateLog(loginname, "登陆", "用户锁定失败", CliectIP, "用户被锁定" + pws + ",登陆地区:" + ClientArea);
                            break;
                        }
                    case "Expiration":
                        {
                            //MessageBox.Show(this, "您已经超过系统设定的最长登陆期限,请联系管理员延长登陆期限!");
                            CommonFunction.USP_Insert_SYS_OperateLog(loginname, "登陆", "登陆期限过期", CliectIP, "登陆期限" + pws + ",登陆地区:" + ClientArea);
                            break;
                        }
                    case "LAN":
                        {
                            //MessageBox.Show(this, "当前帐号只可内部网登陆,请联系管理员解除限制!");
                            CommonFunction.USP_Insert_SYS_OperateLog(loginname, "登陆", "内网登陆限制", CliectIP, "内网登陆限制" + pws + ",登陆地区:" + ClientArea);
                            break;
                        }
                    case "MAC":
                        {
                            //MessageBox.Show(this, "当前帐号已设定固定计算机访问限制,不能访问!");
                            CommonFunction.USP_Insert_SYS_OperateLog(loginname, "登陆", "计算机限制", CliectIP, "计算机限制:" + mac + ",登陆地区:" + ClientArea);
                            break;
                        }

                    default:
                        {
                            string userdm = dr["ID"].ToString().Trim();
                            break;

                        }
                }

                dr.Close();
            }
            else
            {
                //MessageBox.Show(this, "您输入的校验码不正确,请检查后重新输入!");
            }
            //return new JavaScriptSerializer().Serialize();
            return "false";
        }

    }

    --端android


    import java.util.ArrayList;
    import java.util.List;

    import org.apache.http.message.BasicNameValuePair;
    import org.json.JSONException;
    import org.json.JSONObject;
    import org.ksoap2.SoapEnvelope;
    import org.ksoap2.serialization.SoapObject;
    import org.ksoap2.serialization.SoapPrimitive;
    import org.ksoap2.serialization.SoapSerializationEnvelope;
    import org.ksoap2.transport.HttpTransportSE;

    import android.R;
    import android.app.Activity;
    import android.content.Context;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;

    import android.widget.Button;
    import android.widget.TextView;

    public class EPersonTrackActivity extends Activity {
        /** Called when the activity is first created. */
     private static final String NAMESPACE = "http://tempuri.org/";   
     // asmx 路徑 
     private static final String URL = "http://180.110.246.98:8888/resin/josnservice/AndroidService.asmx";   
     //要呼叫的方法
     private static final String MemberLogin_SOAP_ACTION = NAMESPACE+"setObject"; 
     private static final String METHOD_NAME2 = "setObject";
     
     private  Button btnLogin=null;
     private TextView labelInfo=null;
        @Override
        public void onCreate(final Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(resin.Common.R.layout.main);
            btnLogin=(Button)(findViewById(resin.Common.R.id.btnLogin));
            labelInfo=(TextView)(findViewById(resin.Common.R.id.labelInfo));
           
            btnLogin.setOnClickListener(new Button.OnClickListener(){
             
       public void onClick(final View arg0) {
        // TODO Auto-generated method stub
        //返回json
        String method = "setObject";//方法名称
        List<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>();
           JSONObject json = new JSONObject();  
           try {
         json.put("name", "milkmidi");
        } catch (JSONException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
        }  
           try {
         json.put("age", "30");
        } catch (JSONException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
        }
           
           String rs = ""; 
        params.add(new BasicNameValuePair("json", json.toString()));
        //params.add(new BasicNameValuePair("y", String.valueOf(10)));
        Context mContext =EPersonTrackActivity.this;
        String wsurl=mContext.getString(resin.Common.R.string.wsurl);
        rs =WSHelper.GetResponse(method,params,wsurl);
        labelInfo.setText(rs);
           //JSONObject rsJson = new JSONObject(rs);    
           //return rsJson.getString("name")+","+rsJson.getString("age");
        
        /*
        返回单值
        String method = "Add";//方法名称
        List<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>();
        params.add(new BasicNameValuePair("x", String.valueOf(5)));
        params.add(new BasicNameValuePair("y", String.valueOf(10)));
        Context mContext =EPersonTrackActivity.this;
        String wsurl=mContext.getString(resin.Common.R.string.wsurl);
        labelInfo.setText(WSHelper.GetResponse(method,params,wsurl));
        
        try {     
         //mMsgTxt.setText( doSetObject() );
         labelInfo.setText(doSetObject());
         }
        catch (JSONException e)
        {     
         e.printStackTrace();    
        }
        */
       }
            });
        }
        public String doSetObject()
         throws JSONException
         {  
         Log.i("[WebService]", "doSetObject");  
         String rs = "";      
         SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME2);  
         JSONObject json = new JSONObject();  
         json.put("name", "milkmidi");  
         json.put("age", "30");  
         request.addProperty("json", json.toString());      
         SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
         envelope.dotNet = true;   envelope.setOutputSoapObject(request);  
         HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);    
         try {   
          androidHttpTransport.call(MemberLogin_SOAP_ACTION, envelope);     
          SoapPrimitive result = (SoapPrimitive) envelope.getResponse();   
          rs = result.toString();  
          }
         catch (Exception e)
         {  
          TextView mMsgTxt=(TextView)(findViewById(resin.Common.R.id.mMsgTxt));
          mMsgTxt.setText(e.toString());  
          }      
         JSONObject rsJson = new JSONObject(rs);    
         return rsJson.getString("name")+","+rsJson.getString("age");   
         }
      
    }

    //通用调用ws方法

    package resin.Common;
    import java.util.List;

    import org.apache.http.message.BasicNameValuePair;
    import org.ksoap2.SoapEnvelope;
    import org.ksoap2.serialization.SoapObject;
    import org.ksoap2.serialization.SoapPrimitive;
    import org.ksoap2.serialization.SoapSerializationEnvelope;
    import org.ksoap2.transport.AndroidHttpTransport;

    import android.content.Context;


    public class WSHelper
    {
    private static String namespace = "http://tempuri.org/";    
    /*************************************     
     * * 获取web services内容     
     * * @param url     
     * * @param params     
     * * @return     
     *  *************************************/
    public static String GetResponse(String method,List<BasicNameValuePair> params,String wsurl)
    {                  
     try {
      String WSUrl=wsurl;//; //this.getResources().getString(R.string.wsurl);
      //application.getString(R.string.wsurl); 

      String url = WSUrl;            
      SoapObject request = new SoapObject(namespace, method);            
      for(int i=0,len=params.size();i<len;i++){                
       request.addProperty(params.get(i).getName(),
         params.get(i).getValue());            
       }
      SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
                envelope.dotNet = true;            
                envelope.setOutputSoapObject(request);
                AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport(url);
                androidHttpTransport.call(namespace + method, envelope);
                SoapPrimitive result = (SoapPrimitive)envelope.getResponse();
                return result.toString();        
                }
     catch (Exception e)
                {            
      return "Error:调用web services出错!"+e.getMessage();        
      }    
     }
    }

  • 相关阅读:
    SharePoint 2013 商务智能报表发布
    sharepoint designer web 服务器似乎没有安装microsoft sharepoint foundation
    SharePoint 2013 Designer系列之数据视图
    SharePoint 2013 Designer系列之数据视图筛选
    SharePoint 2013 Designer系列之自定义列表表单
    SharePoint 2013 入门教程之创建及修改母版页
    SharePoint 2013 入门教程之创建页面布局及页面
    SharePoint 2010 级联下拉列表 (Cascading DropDownList)
    使用SharePoint Designer定制开发专家库系统实例!
    PL/SQL Developer 建立远程连接数据库的配置 和安装包+汉化包+注册机
  • 原文地址:https://www.cnblogs.com/hhq80/p/2545485.html
Copyright © 2011-2022 走看看