Android利用webservice连接远程sqlserver数据库

WebService原理

三大技术

XML

WebService采用Http协议传输数据,使用XML封装数据以实现跨平台。

SOAP

规定消息头和XML内容格式的协议

WSDL

WebService的说明书,提供所能使用的方法、参数和返回值。

IIS 新建WebService站点

新增网站

打开IIS控制台,找到服务根目录,右键,新建网站

网站设定

浏览测试

使用刚才生成的默认HelloWorld的服务1页面,记得加上端口号

http://localhost:8090/service1.asmx

如果出现以下画面,代表设置成功

C# WebService

新增WebService专案

更改服务程式名称

重命名程式名称

Service1.asmx 修改为 TestService.asmx

此时下面的cs代表文件也会跟着修改,但可发现,代码中的类名并没有跟着变动

修改类名称

手动将类名称由 Service1 修改为 TestService

如果此时执行发布会发现还是会有问题,报错無法建立型別 ‘.Service1’

修改服务绑定代码

在 TestService.asmx 上右键选择打开方式,选择“Web服务编辑器”打开

此时会看到服务所有设定,比如编程语言,后台代码,类库等,修改类库名为上一步所设值

发布

专案上右键,点击发布,如果不是第一次发布,上次的配置会保留,默认就好

Android Soap

Ksoap2-android

官网地址

https://simpligility.github.io/ksoap2-android/index.html

发行版本

https://oss.sonatype.org/content/repositories/ksoap2-android-releases/

  • 切记所需要的文件是在

com>google>code>ksoap2-android>ksoap2-android-assembly

  • 选择最新版本,然后使用-with-dependencies.jar包

最新版本

https://oss.sonatype.org/content/repositories/ksoap2-android-releases/com/google/code/ksoap2-android/ksoap2-android-assembly/3.6.4/ksoap2-android-assembly-3.6.4-jar-with-dependencies.jar

调用WebService取得数据

初使化soap
private final String serviceNameSapce = "http://192.168.20.135:8090/";
private final String serviceUrl = "http://192.168.20.135:8090/TestService.asmx";
private final String serviceMethod = "HelloWorld";
private final String serviceAction = "http://192.168.20.135:8090/HelloWorld";
private String strResult = "";
调用
new Thread(new Runnable() {
    
    
    @Override
    public void run() {
    
    
        //创建HttpTransportSE传输对象,serviceUrl是webservice提供服务的url
        HttpTransportSE httpTransportSE = new HttpTransportSE(serviceUrl);
        //使用SOAP1.1协议创建Envelop对象,根据服务端WebService的版本号设置SOAP协议的版本号
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        //实例化SoapObject对象,第一个参数表示命名空间,第二个参数表示要调用的WebService方法名
        SoapObject soapObject= new SoapObject(serviceNameSapce, serviceMethod);
        //设置调用方法的参数值,如果没有参数,可以省略
        //soapObject.addProperty("theCityCode", cityName);
        envelope.bodyOut = soapObject;
        envelope.dotNet = true;
        try {
    
    
            //调用webservice
            httpTransportSE.call(serviceAction, envelope);
            //获取服务器响应返回的SOAP消息
            if(envelope.getResponse() != null){
    
    
                SoapObject resultSoap = (SoapObject)envelope.bodyIn;
                strResult = resultSoap.getProperty(0).toString();
                mHandler.sendEmptyMessage(0x002);
            }
        } catch (IOException | XmlPullParserException e) {
    
    
            e.printStackTrace();
        }
    }
}).start();

猜你喜欢

转载自blog.csdn.net/ymtianyu/article/details/106808684
今日推荐