如何使用C#创建web服务并在Android上解析SOAP消息?

如何使用C#创建web服务并在Android上解析SOAP消息?,c#,android,web-services,soap,ksoap2,C#,Android,Web Services,Soap,Ksoap2,尽管Ksoap2是在Android应用程序开发中处理SOAP消息的一个很好的库,但它并没有很好的文档记录。我读了很多博客文章和问答,但信息往往不完整。是否可以提供以下方面的完整示例: 如何使用C#创建简单的web服务 如何在Android上使用此web服务上的webmethod并解析返回的SOAP消息以生成ListView 您可以很容易地找到如何在google上创建简单的web服务 我想向您展示如何从.net web服务获取数据: 首先,您必须使用ksoap2库在android中获取数据 下载并

尽管Ksoap2是在Android应用程序开发中处理SOAP消息的一个很好的库,但它并没有很好的文档记录。我读了很多博客文章和问答,但信息往往不完整。是否可以提供以下方面的完整示例:

  • 如何使用C#创建简单的web服务
  • 如何在Android上使用此web服务上的webmethod并解析返回的SOAP消息以生成ListView

  • 您可以很容易地找到如何在google上创建简单的web服务

    我想向您展示如何从.net web服务获取数据:

    首先,您必须使用ksoap2库在android中获取数据

    下载并复制到project>libs文件夹中

    其次,您必须使用asynctask调用web服务,因为在android中,您必须使用asynctask进行长时间的处理

    若您下载ksoap2库并将其复制到项目中,那个么让我们开始吧

    //import ksoap2
    
    import org.ksoap2.SoapEnvelope;
    import org.ksoap2.serialization.PropertyInfo;
    import org.ksoap2.serialization.SoapObject;
    import org.ksoap2.serialization.SoapSerializationEnvelope;
    import org.ksoap2.transport.HttpTransportSE;
    
    
    public class Example extends Activity {
    
        //define your web service namespace
    private static final String NAMESPACE = "http://tempuri.org/";  
        //web service URL
    private static final String URL = "http://www.example.com/webservice1.asmx";
    
    
    //variables
    private String username;
    private String password;
    private String userID;
    
    
    public class ExampleAS extends AsyncTask<String,String,String>{
    
        private ProgressDialog dialog = new ProgressDialog(Example.this);       
        String ParamUserName;
        String ParamPassword;
    
        public ExampleAS(String ParamUserName,String ParamPassword){
            this.ParamUserName=ParamUserName;
            this.ParamPassword=ParamPassword;
    
        }
    
        @Override
         protected void onPreExecute() {
            dialog.setMessage("Loading...");
            dialog.show();
         }
    
        @Override
        protected String doInBackground(String... params) {
            ExampleFunc(ParamUserName,ParamPassword);
            return userID;
        }
    
        protected void onPostExecute(String userID){
            label.setText(userID);
            dialog.dismiss();
        }
    
    }
    
    private String ExampleFunc(String ParamUserName,String ParamPassword){
        PropertyInfo uName = new PropertyInfo();
        uName.name= "USERNAME"; //It must be same with your webservice's parameter name
        uName.setValue(ParamUserName); //Parameter value
        uName.type = PropertyInfo.STRING_CLASS; //Parameter type
    
        PropertyInfo pass = new PropertyInfo();
        pass.name= "PASSWORD"; //It must be same with your webservice's parameter name      
                pass.setValue(ParamPassword); //Parameter value
        pass.type = PropertyInfo.STRING_CLASS; //Parameter type
    
        SoapObject request = new SoapObject(NAMESPACE, "Login"); //Namespace,Webservice method name
        request.addProperty(uName);
        request.addProperty(pass);
    
    
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.bodyOut=request;
        envelope.dotNet = true; 
        envelope.setOutputSoapObject(request);
    
        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
        androidHttpTransport.debug = true;
    
        try {
    
            androidHttpTransport.call("http://tempuri.org/Login", envelope);
            SoapObject response = (SoapObject) envelope.getResponse();
    
            Object property = response.getProperty(0);
            if(property instanceof SoapObject){
                SoapObject users = (SoapObject) property;
                    userID = users.getProperty("user_id").toString();
                    }
    
     } 
             catch (Exception e) {          
                e.printStackTrace();
            }
    
    
    
        return userID;
    
    }
    

    最后,您应该关注我的另一篇文章:

    有比创建旧的web服务更简单的事情。为什么不看看Web.API或WCF呢?它们很容易使用,安装,配置等。我受生产基础设施的限制,这不是很新的。
    new ExampleAS("admin","1234").execute();