安卓学习日记——WebService

  • WebService简介
    WebService是一种基于SOAP协议的远程调用标准,通过webservice可以将不同操作系统平台、不同语言、不同技术整合到一块。Android系统中比较常用的有Ksoap2,可以从http://code.google.com/p/ksoap2-android/downloads/list进行下载;将下载的ksoap2-xxx-dependencies.jar包复制到工程的lib目录中即可使用。
    查询手机号码归属地
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 MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    //命名空间
    String nameSpace="http://WebXml.com.cn/";
    //调用的方法名称
    String methodName="getMobileCodeInfo";
    //EndPoint
    String endPoint="http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx";
    //SOAP
    String soapAction="http://WebXml.com.cn/getMobileCodeInfo";

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

添加访问网络的权限

 <uses-permission android:name="android.permission.INTERNET"/>

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/chen_xiaoke/article/details/89355784