mono for android调用webServer服务

来源:互联网 发布:linux rm -rf 命令撤回 编辑:程序博客网 时间:2024/05/22 14:31

实现效果图-简陋的计算器功能,如下

                      

程序分2部分,

1.  websever服务

2.  Android客户端

---------------------------------------


1.  websever服务


(在服务类只用到了,ICalculator.cs、Calculator.cs,其他接口类和实现这个接口方法,本程序不用)

1-1 ICalculator接口类

/******************************************** ** 类编  号: * ** 作    用:实现计算器类接口 * ** 作    者:lcb * ** 编写日期:2013-7-4 *********************************************/using System;using System.Collections.Generic;using System.Text;using System.ServiceModel;namespace CeService{    [ServiceContract]    public interface ICalculator    {        /// <summary>        /// 加法        /// </summary>        /// <param name="num1">第一个数</param>        /// <param name="num2">第二个数</param>        /// <param name="num">结果</param>        /// <returns></returns>        [OperationContract]        string Add(double num1, double num2,ref double num);        /// <summary>        /// 减法        /// </summary>        /// <param name="num1">第一个数</param>        /// <param name="num2">第二个数</param>        /// <param name="num">结果</param>        /// <returns></returns>        [OperationContract]        string Reduce(double num1, double num2, ref double num);        /// <summary>        /// 乘法        /// </summary>        /// <param name="num1">第一个数</param>        /// <param name="num2">第二个数</param>        /// <param name="num">结果</param>        /// <returns></returns>        [OperationContract]        string Division(double num1, double num2, ref double num);        /// <summary>        /// 除法        /// </summary>        /// <param name="num1">第一个数</param>        /// <param name="num2">第二个数</param>        /// <param name="num">结果</param>        /// <returns></returns>        [OperationContract]        string Multiplication(double num1, double num2, ref double num);    }}

1-2 实现接口类 Calculator

/******************************************** ** 类编  号: * ** 作    用:实现计算器类 * ** 作    者:lcb * ** 编写日期:2013-7-4 *********************************************/using System;using System.Collections.Generic;using System.Text;namespace CeService{  public class Calculator:ICalculator    {              /// <summary>        /// 加法        /// </summary>        /// <param name="num1">第一个数</param>        /// <param name="num2">第二个数</param>        /// <param name="num">结果</param>        /// <returns></returns>        ///         public string Add(double num1, double num2, ref double num)        {                       try            {                num = num1 + num2;                return "1";            }            catch (Exception ex)            {                return ex.ToString();            }        }        /// <summary>        /// 减法        /// </summary>        /// <param name="num1">第一个数</param>        /// <param name="num2">第二个数</param>        /// <param name="num">结果</param>        /// <returns></returns>        public string Reduce(double num1, double num2, ref double num)        {            try            {                num = num1 - num2;                return "1";            }            catch (Exception ex)            {                return ex.ToString();            }        }        /// <summary>        /// 乘法        /// </summary>        /// <param name="num1">第一个数</param>        /// <param name="num2">第二个数</param>        /// <param name="num">结果</param>        /// <returns></returns>        public string Division(double num1, double num2, ref double num)        {            try            {                num = num1 * num2;                return "1";            }            catch (Exception ex)            {                return ex.ToString();            }        }        /// <summary>        /// 除法        /// </summary>        /// <param name="num1">第一个数</param>        /// <param name="num2">第二个数</param>        /// <param name="num">结果</param>        /// <returns></returns>        public string Multiplication(double num1, double num2, ref double num)        {            try            {                num = num1 / num2;                return "1";            }            catch (Exception ex)            {                return ex.ToString();            }        }            }}

1-3 App.config

<?xml version="1.0" encoding="utf-8"?><configuration>  <!--<appSettings>    <add key="ConnectionString" value="Data Source=.;Initial Catalog=yanshi2010;uid=sa;pwd=sa" />    <add key="SMSPort" value="3" />    <add key="SMSBaudRate" value="19200" />    <add key="SMSState" value="false" />  </appSettings>-->  <system.serviceModel>    <services>      <!--平台服务---------------Start-->      <!-- 服务接口实现类 -->      <service name="CeService.Calculator" behaviorConfiguration="ServiceBehavior">        <!-- 服务接口 -->        <endpoint address="" binding="basicHttpBinding" contract="CeService.ICalculator" />        <host>          <baseAddresses>            <add baseAddress="http://192.168.0.220:5818/CeService" />          </baseAddresses>        </host>      </service>    </services>    <behaviors>      <serviceBehaviors>        <behavior name="ServiceBehavior">          <serviceMetadata httpGetEnabled ="true"/>        </behavior>      </serviceBehaviors>    </behaviors>  </system.serviceModel></configuration>

开启服务(代码大家都知道怎么写吧,省略 。重点是讲解android方面)


————————————————————————————————————————————————————————————————

————————————————————————————————————————————————————————————————
2.  Android客户端

项目整体:


2-1 添加web引用(地址是你配置文件设置好的,如上图)

2-2 Main.axml


代码:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent">    <EditText        android:id="@+id/txtPhoneNo"        android:layout_width="304.0dp"        android:phoneNumber="true"        android:hint="请输入第一个数"        android:layout_height="wrap_content"        android:layout_marginTop="5px"        android:layout_marginLeft="5px" />    <EditText        android:id="@+id/txtSMS"        android:layout_width="313.3dp"        android:layout_height="40.0dp"        android:phoneNumber="true"        android:gravity="top"        android:hint="请输入第二个数"        android:layout_below="@id/txtPhoneNo" />    <Button        android:id="@+id/btnadd"        android:text="加"        android:layout_width="69dp"        android:layout_height="wrap_content"        android:layout_below="@id/txtSMS" />    <Button        android:id="@+id/btnjian"        android:text="减"        android:layout_width="69dp"        android:layout_height="wrap_content"        android:layout_below="@id/txtSMS"        android:layout_toRightOf="@id/btnadd" />    <Button        android:id="@+id/btncheng"        android:text="乘"        android:layout_width="69dp"        android:layout_height="wrap_content"        android:layout_below="@id/txtSMS"        android:layout_toRightOf="@id/btnjian" />    <Button        android:id="@+id/btnchu"        android:text="除"        android:layout_width="69dp"        android:layout_height="wrap_content"        android:layout_below="@id/txtSMS"        android:layout_toRightOf="@id/btncheng" />    <EditText        android:id="@+id/txtjieguo"        android:layout_width="fill_parent"        android:layout_height="40.7dp"        android:gravity="top"        android:hint=""        android:layout_below="@id/btnchu" /></RelativeLayout>

2-3 Activity1.cs

using System;using Android.App;using Android.Content;using Android.Runtime;using Android.Views;using Android.Widget;using Android.OS;namespace Databasedemo{    [Activity(Label = "Databasedemo", MainLauncher = true, Icon = "@drawable/icon")]    public class Activity1 : Activity    {        EditText tvjg;        EditText num1;        EditText num2;        double num = 0;        protected override void OnCreate(Bundle bundle)        {            base.OnCreate(bundle);            // Set our view from the "main" layout resource            SetContentView(Resource.Layout.Main);            //加            Button btnadd = FindViewById<Button>(Resource.Id.btnadd);            //减            Button btnjian = FindViewById<Button>(Resource.Id.btnjian);            //乘            Button btncheng = FindViewById<Button>(Resource.Id.btncheng);            //除            Button btnchu = FindViewById<Button>(Resource.Id.btnchu);            //第一个数            num1 = FindViewById<EditText>(Resource.Id.txtPhoneNo);            //第二个数            num2 = FindViewById<EditText>(Resource.Id.txtSMS);            //结果            tvjg = FindViewById<EditText>(Resource.Id.txtjieguo);             WebReference.Calculator ca = new WebReference.Calculator();             btnadd.Click += delegate             {                                              double num1s = Convert.ToDouble(num1.Text.ToString());                 double num2s = Convert.ToDouble(num2.Text.ToString());                 string flag = ca.Add(num1s, num2s, ref num);                 tvjg.Text = num1s.ToString() + "+" + num2s.ToString() + "=" + num.ToString();             };             btnjian.Click += delegate             {                 double num1s = Convert.ToDouble(num1.Text.ToString());                 double num2s = Convert.ToDouble(num2.Text.ToString());                 string flag = ca.Reduce(num1s, num2s, ref num);                 tvjg.Text = num1s.ToString() + "-" + num2s.ToString() + "=" + num.ToString();             };             btncheng.Click += delegate             {                 double num1s = Convert.ToDouble(num1.Text.ToString());                 double num2s = Convert.ToDouble(num2.Text.ToString());                 string flag = ca.Division(num1s, num2s, ref num);                 tvjg.Text = num1s.ToString() + "*" + num2s.ToString() + "=" + num.ToString();             };             btnchu.Click += delegate             {                 double num1s = Convert.ToDouble(num1.Text.ToString());                 double num2s = Convert.ToDouble(num2.Text.ToString());                 string flag = ca.Multiplication(num1s, num2s, ref num);                 tvjg.Text = num1s.ToString() + "/" + num2s.ToString() + "=" + num.ToString();             };        }          }}

代码,到此已完成!

源码下载



原创粉丝点击