Android调用WebService(Android+ksoap)

本文详细介绍了如何在Android应用中通过KSOAP2库调用使用C#编写的.NET WebService,包括设置命名空间、方法名称、URL等关键参数,并演示了异常处理和响应解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

--------------------------C# Codes Begin------------------------------

using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Data;
using System.Collections.Generic;


[WebService(Namespace = "http://tempuri.org/")]    //关键,此为被调用的命名空间
//[SoapRpcService]//指定使用rpc方式
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service : System.Web.Services.WebService
{
    public Service () {

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

    [WebMethod]
    public string HelloWorld() {
        return "Hello World";
    }

    [WebMethod]
    public bool CheckUserLogin(string sUserName,string sPassWord,string sYardCode)
    {
        bool bResult = false;
        if (UserCommon.CheckUserLogin(sUserName, sPassWord, false))
        {
                      bResult = true;
        }

        return bResult;
    }

 

--------------------------C# Codes End------------------------------

 

--------------------------Android Codes Begin------------------------------

package pkg.HelloWorld;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.*;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;


public class HelloWorldActivity extends Activity {
    /** Called when the activity is first created. */
 private TextView hintInfo=null;
 private EditText edtUser=null;
 private EditText edtPwd=null;
 private Button confirmbtn=null;
 private Button closeButton=null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        edtUser=(EditText)findViewById(R.id.edtUserName);
        edtPwd =(EditText)findViewById(R.id.edtPassWord);
        hintInfo=(TextView)findViewById(R.id.hitInfo);
        confirmbtn=(Button)findViewById(R.id.btnLogin);
        confirmbtn.setOnClickListener(new myClick());
        closeButton=(Button)findViewById(R.id.btnClose);
        closeButton.setOnClickListener(new CloseClick());
    }
    
 
    private class myClick implements OnClickListener {

  @Override
  public void onClick(View v)
  {
   try
   {
   //hintInfo.setText("进入了事件!");
   // TODO Auto-generated method stub
   if (edtUser.getText().toString().length()==0)
   {
    hintInfo.setText("请输入账号 !");
    edtUser.selectAll();
    return;
   } 
   else if (edtPwd.getText().toString().length()==0)
   {
     hintInfo.setText("请输入密码 !");
     edtUser.selectAll();
        return;
   }
   //调用.net 的WebService.
   
     String nameSpace = "http://tempuri.org/";
     String methodName = "CheckUserLogin";
     String url ="http://10.0.2.2:1205/SmartYmsWebService/Service.asmx";   //10.0.2.2 为Android模拟器的本地(localhost)IP
     String soapAction = nameSpace + methodName;
     
     //设置连接参数
     SoapObject request = new SoapObject(nameSpace, methodName);
     
     //增加属性参数。 将相关的函数参数放入到过程中。
     request.addProperty("sUserName", edtUser.getText().toString());
     request.addProperty("sPassWord", edtPwd.getText().toString());
     request.addProperty("sYardCode", "WLY");

    


     SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);//soap协议版本必须用SoapEnvelope.VER11(Soap V1.1);

     //注意:这个属性是对dotnetwebservice协议的支持,如果dotnet的webservice 不指定rpc方式则用true否则要用false
    envelope.dotNet = true;

     //envelope.setOutputSoapObject(request);//设置请求参数
     envelope.bodyOut=request;   //enveloper.bodyOut=request 与 envelope.setOutputSoapObject(request) 效果相同。

     //step4 创建HttpTransportSE对象
     HttpTransportSE  ht = new HttpTransportSE(url);
    //step5 调用WebService
     ht.call(soapAction, envelope);    //关键的一步,很多问题都在这一步调试时出现问题。要么是IIS有问题,要么是ksoap2相关参数没配置好。
     if(envelope.getResponse()!=null){
        SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
        Boolean  result =Boolean.parseBoolean(response.toString()) ;
       if (result)
       {
         hintInfo.setText("登录成功!");
       }
       else
       {
        hintInfo.setText("登录失败!");
       }
      }
     else {
    hintInfo.setText("服务器可能没有开启!");
   }
     
     
   } catch (Exception e)
   {
    // TODO: handle exception
    hintInfo.setText("异常了,原因:" + e.getMessage());
   }   
   
  }
    }
    private class CloseClick implements OnClickListener {

  @Override
  public void onClick(View v)
  {
   // TODO Auto-generated method stub
     System.exit(0);
  }
    }

--------------------------Android Codes End   ------------------------------

Android调用WebService(Android+ksoap) - 淡然 - 淡然

 

另外还有一个重要的环节,就是ksoap2的jar包引用问题:(如图引用不会出现问题否则会提示找不到ksoap2的相关对象错误)

Android调用WebService(Android+ksoap) - 淡然 - 淡然

内容概要:本文详细探讨了基于MATLAB/SIMULINK的多载波无线通信系统仿真及性能分析,重点研究了以OFDM为代表的多载波技术。文章首先介绍了OFDM的基本原理和系统组成,随后通过仿真平台分析了不同调制方式的抗干扰性能、信道估计算法对系统性能的影响以及同步技术的实现与分析。文中提供了详细的MATLAB代码实现,涵盖OFDM系统的基本仿真、信道估计算法比较、同步算法实现和不同调制方式的性能比较。此外,还讨论了信道特征、OFDM关键技术、信道估计、同步技术和系统级仿真架构,并提出了未来的改进方向,如深度学习增强、混合波形设计和硬件加速方案。; 适合人群:具备无线通信基础知识,尤其是对OFDM技术有一定了解的研究人员和技术人员;从事无线通信系统设计与开发的工程师;高校通信工程专业的高年级本科生和研究生。; 使用场景及目标:①理解OFDM系统的工作原理及其在多径信道环境下的性能表现;②掌握MATLAB/SIMULINK在无线通信系统仿真中的应用;③评估不同调制方式、信道估计算法和同步算法的优劣;④为实际OFDM系统的设计和优化提供理论依据和技术支持。; 其他说明:本文不仅提供了详细的理论分析,还附带了大量的MATLAB代码示例,便于读者动手实践。建议读者在学习过程中结合代码进行调试和实验,以加深对OFDM技术的理解。此外,文中还涉及了一些最新的研究方向和技术趋势,如AI增强和毫米波通信,为读者提供了更广阔的视野。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值