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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM