Android学习——WebService

ksoap2——WebService客户端调用

WebService简介

WebService是一种基干SOAP协议的远程调用标准,通过webservice可以将不同操作系统平台、不同语言、不同技术整合到一块。

Android系统中比较常用的有Ksoap2,可以从http://code.google.com/p/ksoap2-android/downloads/list进行下载;将下载的ksoap2-xxx- dependencies.jar包复制到工程的lib目录中即可使用。

Android调用WebService的步骤

  1. 指定WebService的命名空间和调用的方法
String nameSpace="http://WebXml.com.cn/";
String methodName="getMobileCodeInfo";
SoapObject rpc=new SoapObject(nameSpace,methodName);
  1. 设置需调用的WebService接口需要传入参数
rpc.addProperty("","");
  1. 生成调用WebService方法的SOAP请求信息,并指定SOAP版本
SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER12);
envelope.bodyOut=rpc;
envelope.dotNet=true;//设置是否调用的是dotNet开发的WebService
  1. 创建HttpTransportSE对象
String endPoint="http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl";
HttpTransportSE transportSE=new HttpTransportSE(endPoint);
  1. 调用WebService
transportSE.call(soapAction,envelope);
  1. 获取返回的数据、结果
SoapObject object= (SoapObject) envelope.bodyIn;
String result=object.getProperty(0).toString();

查找手机归属地案例

package com.example.volly;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;

import java.io.IOException;

public class Main3Activity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);
    }

    //命名空间
    String nameSpace="http://WebXml.com.cn/";
    //调用的方法名称
    String methodName="getMobileCodeInfo";
    //EndPoint
    String endPoint="http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl";
    //SOAP Action
    String soapAction="http://WebXml.com.cn/getMobileCodeInfo";

    public void webServiceClick(View view){
        new Thread(new Runnable() {
            @Override
            public void run() {
                //指定WebService的命名空间和调用的方法名
                SoapObject rpc=new SoapObject(nameSpace,methodName);
                //设置需调用的WebService接口需要传入的两个参数mobileCode和userId
                rpc.addProperty("mobileCode","13522610430");
                rpc.addProperty("userId","");
                //生成调用WebService方法的SOAP请求信息,并指定SOAP版本
                SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER12);
                envelope.bodyOut=rpc;
                envelope.dotNet=true;//设置是否调用的是dotNet开发的WebService
                HttpTransportSE transportSE=new HttpTransportSE(endPoint);
                try {
                    transportSE.call(soapAction,envelope);//调用WebService
                } catch (Exception e) {
                    e.printStackTrace();
                }
                //获取返回的数据
                SoapObject object= (SoapObject) envelope.bodyIn;
                //获取返回的结果
                String result=object.getProperty(0).toString();
                System.out.println(result);
            }
        }).start();
    }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/UUUUUltraman/article/details/89351878