1.准备工作

(1)下载ksoap2-android-assembly-xxx-jar-with-dependencies.jar包

下载地址:

Index of /repositories/ksoap2-android-releases/com/google/code/ksoap2-android/ksoap2-android-assembly/3.6.0

下载自己需要的版本号就行,我用的是

ksoap2-android-assembly-3.3.0-jar-with-dependencies.jar

(2)导入jar包

首先,找到下载好的jar包并复制到安卓的libs目录下

然后Add as libaray

这样就完成jar包的导入啦!

如果找不到libs目录,可以先切换为package,再执行第一张图的操作

我用的模拟器的api为26

2.接下来上代码了

(1)首先在AndroidManifest.xml中添加网络权限,前提是之前已经配置过sdk路径了,如何开启的网络权限,第一次环境变量配置以后要重启喔,这样才会生效。

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application>android:usesCleartextTraffic="true"
</application>

加完以后,可以先在模拟器中的浏览器随便浏览一个网站,看是否联网了

(2)MainActivity.java的代码如下:

package com.example.weather;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;import androidx.appcompat.app.AppCompatActivity;import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;public class MainActivity extends AppCompatActivity {private EditText phoneSecEditText;private TextView resultView;private Button queryButton;private String result;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);phoneSecEditText = (EditText) findViewById(R.id.phone_sec);resultView = (TextView) findViewById(R.id.result_text);queryButton = (Button) findViewById(R.id.query_btn);queryButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 手机号码(段)String phoneSec = phoneSecEditText.getText().toString().trim();// 简单判断用户输入的手机号码(段)是否合法if ("".equals(phoneSec) || phoneSec.length() < 7) {// 给出错误提示phoneSecEditText.setError("您输入的手机号码(段)有误!");phoneSecEditText.requestFocus();// 将显示查询结果的TextView清空resultView.setText("");return;}//启动后台异步线程进行连接webService操作,并且根据返回结果在主线程中改变UIQueryAddressTask queryAddressTask = new QueryAddressTask();//启动后台任务Log.d("你", phoneSec);queryAddressTask.execute(phoneSec);}});}/*** 手机号段归属地查询** @param phoneSec 手机号段*/public String getRemoteInfo(String phoneSec) throws Exception{String WSDL_URI = "http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?op=getDatabaseInfo";//wsdl 的uriString namespace = "http://WebXml.com.cn/";//namespaceString methodName = "getMobileCodeInfo";//要调用的方法名称SoapObject request = new SoapObject(namespace, methodName);// 设置需调用WebService接口需要传入的两个参数mobileCode、userIdrequest.addProperty("mobileCode", phoneSec);request.addProperty("userId", "");//创建SoapSerializationEnvelope 对象,同时指定soap版本号(之前在wsdl中看到的)SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapSerializationEnvelope.VER12);envelope.bodyOut = request;//由于是发送请求,所以是设置bodyOutenvelope.dotNet = true;//由于是.net开发的webservice,所以这里要设置为trueHttpTransportSE httpTransportSE = new HttpTransportSE(WSDL_URI);httpTransportSE.call(null, envelope);//调用// 获取返回的数据SoapObject object = (SoapObject) envelope.bodyIn;// 获取返回的结果result = object.getProperty(0).toString();Log.d("debug",result);return result;}class QueryAddressTask extends AsyncTask<String, Integer, String> {@Overrideprotected String doInBackground(String... params) {// 查询手机号码(段)信息*/try {result = getRemoteInfo(params[0]);} catch (Exception e) {e.printStackTrace();}//将结果返回给onPostExecute方法return result;}@Override//此方法可以在主线程改变UIprotected void onPostExecute(String result) {// 将WebService返回的结果显示在TextView中Toast.makeText(MainActivity.this, "对了", Toast.LENGTH_SHORT).show();resultView.setText(result);}}
}

(3)activity_main.xml的代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:padding="5dp"tools:context=".MainActivity"><EditTextandroid:id="@+id/phone_sec"android:text=""android:layout_width="wrap_content"android:layout_height="wrap_content"android:hint="请输入查询的相关参数" /><Buttonandroid:id="@+id/query_btn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="号码归属地查询" /><TextViewandroid:id="@+id/result_text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="5dp"android:layout_marginTop="5dp"android:text="结果显示:"android:textSize="16sp" /></LinearLayout>

结语:这是我第一次写csdn,如有错误,欢迎指正批评。如果该代码无法运行时,可以尝试换个api。大家做这个项目的时候,可以尝试在以下代码中的双引号位置,用ctrl+B看是否能自动跳转到浏览器中的界面

String WSDL_URI = "http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?op=getDatabaseInfo";

好了,写完了!!!

Android Studio之号码归属地查询(Webservice)相关推荐

  1. [android] 手机卫士号码归属地查询

    使用小米号码归属地数据库,有两张表data1和data2 先查询data1表,把手机号码截取前7位 select outkey from data1 where id="前七位手机号&quo ...

  2. 手机号归属地_【号码归属地查询工具】

    本工具用于批量查询手机号码归属地信息. 数据需求 把要要查询的手机号码放到"号码清单"文件中,将清单文件放置与工具同目录下: 手机号码 18666793012 1379287108 ...

  3. 号码归属地查询 核心平台 NGD

    号码归属地查询模块已发布.目前仅提供两个方法,具体见代码: /** * * <B>号码归属查询类</B><br> * * @author NGD * @since ...

  4. postman的使用-----号码归属地查询接口测试

    postman的使用-----号码归属地查询接口测试(get 接口) postman介绍 完整的postman主界面如下: 号码归属地查询接口说明: 本次postman使用的是聚合接口中的号码归属地 ...

  5. 表格号码归属地查询的正确检测方式

    工具/原料: 能上网的电脑一台. 音速表格号码归属地 功能: 1 可以对表格中的归属地,运营商,进行快速的批量查询. 2 可以过滤表格当中重复的号码. 特点: 1. 查询以后的数据直观,明了. 2.  ...

  6. python 号码归属地查询

    python 号码归属地查询:s='''5582|1860101|010|北京市|北京联通GSM卡 5583|1860100|010|北京市|北京联通GSM卡 5584|1368141|010|北京市 ...

  7. Android实现号码归属地查询

    我们通过发送XML访问 WebService就可以实现号码的归属地查询,我们可以使用代理服务器提供的XML的格式进行设置,然后请求提交给服务器,服务器根据请求就会返回给一个XML,XML中就封装了我们 ...

  8. 号码归属地查询---------------

    1,布局文件main <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:a ...

  9. 2023 号码归属地查询API接口PHP源码

    接口介绍:该接口目前已集成 472,020 条归属地查询记录,目前应该是最全面的,源码全部开源,该源码搭建非常简单,直接上传解压缩文件即可访问,PHP环境版本7.0以上即可,虚拟空间都可以使用,无需安 ...

最新文章

  1. 提高项目开发效率之--会议室墙的进度表
  2. java B2B2C Springboot多租户电子商城系统-spring-cloud-eureka-consumer...
  3. html关于超链接的问题,关于超链接的一些问题
  4. 怎么在安卓布局里设置滚动字体_Get新技能|如何在手机上设置文字版拼音?
  5. python wheel使用_Python wheel.Wheel方法代碼示例
  6. 十大经典排序算法2(Python版本)
  7. angular 生命周期钩子 ngOnInit() 和 ngAfterViewInit() 的区别
  8. mysql导出数据库方法_mysql导出数据库几种方法
  9. 适合完全初学者的Python自学路线图和学习方法
  10. 功能测试分析和测试用例编写模板
  11. Vue-cli3项目案例
  12. MSDN官网下载_Win10 winServer 原版系统下载 纯净版
  13. 行业专家揭秘家装五大主材底价
  14. 服务器系统怎么安装网卡驱动,Windows7系统怎么安装8139网卡驱动
  15. Mac和iphone利用自带邮件客户端添加263企业邮箱
  16. DELPHI 旧控件安装到 DELPHI11 新版环境的操作
  17. Google Maps的故事,你知道多少?
  18. 用s函数实现Lugre摩擦模型
  19. 6-10 使用函数求余弦函数的近似值 (15 分)本题要求实现一个函数,用下列公式求cos(x)的近似值,精确到最后一项的绝对值小于e:cos(x)=x0/0!−x2/2!+x4/4!−x6/
  20. Linux 环境下iSCSI Target 与 Initiator 配置

热门文章

  1. 电子显示Display基础知识
  2. R语言可视化——动态心型图
  3. Matlab入门基础_三
  4. java jacob ocx_JAVA通过jacob调用ocx
  5. 汉罗塔递归算法(C++)
  6. windows10计算机管理器,win10设备管理器怎么打开?设备管理器打开的方法
  7. 修改时序约束改变slack_改变我们使用Slack的方式解决了我们的透明度和筒仓问题
  8. DDD/ABP 洋葱架构aka整洁架构
  9. mipsel上移植花生壳域名服务
  10. 成熟的男人喜欢什么样的女性?