Android调用C# .net 的WebService接口

这是在项目中遇到的,公司的后台是用C# .net写的,在Android设备中调用后台接口。
这里我们需要引用一个第三方的jar包,ksoap2,大家可以百度一下,然后把它添加到我们的Android工程中。
需要注意的地方:

  • 权限一定要开,需要访问网络
  • 访问网络需要在非主线程中访问

然后就是接下来的代码:

        //访问空间,由于当时是本地测试,默认都是"http://tempuri.org/"
        String nameSpace = "http://tempuri.org/";
        //访问方法名称
        String methodName ="Login";  
             
        final String URL = "http://192.168.0.123/AppService/Service.asmx";
        final String soapAction = "http://tempuri.org/Login";

        final SoapObject soapObject = new SoapObject(nameSpace,methodName);

        //此处的参数,是要访问接口时需要传入的参数,键值对形式
        soapObject.addProperty("userName","admin");
        soapObject.addProperty("password","");

        // 这里的版本"SoapEnvelope.VER10",可以在11,12,之间测试,看自己需要哪个
        final SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10);

        envelope.bodyOut = soapObject;

        // 后台用.net写,这个一定要有
        envelope.dotNet = true;

        envelope.setOutputSoapObject(soapObject);
        final HttpTransportSE transport = new HttpTransportSE(URL);

        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    //这里调用Call方法访问网络,在子线程中进行
                    transport.call(soapAction, envelope);
                    
                    // 获取响应,此处ksoap已经把返回结果以对象的形式给我们,直接调用即可
                    final SoapPrimitive result = (SoapPrimitive) envelope.getResponse();
                    System.out.println("*********************");
                    System.out.println(result.toString());

                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();

你可能感兴趣的:(Android调用C# .net 的WebService接口)