package com.example.phonelocation;import org.ksoap2.serialization.SoapObject;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;public class MainActivity extends Activity {// 声明控件private Button btnquery;private EditText et;private TextView tv;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);init();btnquery.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {if (et.getText() != null) {System.out.println(et.getText().toString());// 获取远程Webservice返回的对象String detail = WebServiceUtils.getLocationInfo(et.getText().toString());if (detail != null) {tv.setText(detail);}}}});}// 初始化private void init() {btnquery = (Button) findViewById(R.id.button1);et = (EditText) findViewById(R.id.editText1);tv = (TextView) findViewById(R.id.info);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.activity_main, menu);return true;}}


package com.example.phonelocation;import java.io.IOException;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 android.util.Log;public class WebServiceUtils {// 定义webservice的命名空间,命名空间的大小写出问题也可能报错private static final String Service_Name = "http://WebXml.com.cn/";// 定义提供服务的URL地址private static final String URL = "http://www.webxml.com.cn/WebServices/MobileCodeWS.asmx";// 调用webservice服务,获取号码归属地信息public static String getLocationInfo(String mobileCode, String userID) {// 调用的方法名称String methodName = "getMobileCodeInfo";// 创建HTTPTransportSE传输对象HttpTransportSE ht = new HttpTransportSE(URL);ht.debug = true;// 这句不清楚什么意思// 使用SOAP1.1协议创建Envelope对象SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);// 实例化SoapObject对象SoapObject soapobject = new SoapObject(Service_Name, methodName);//将需要传递的参数通过SoapObject传递过去,如果没有参数可不设置soapobject.addProperty("mobileCode",mobileCode);soapobject.addProperty("userID",userID);envelope.bodyOut = soapobject;// 设置与.net提供的webservice有较好的兼容性envelope.dotNet = true;// 调用webservicetry {ht.call(Service_Name + methodName, envelope);if (envelope.getResponse()!= null) {//获取服务器返回的SOAP消息SoapObject result = (SoapObject) envelope.bodyIn;Log.i("test",result.getProperty(methodName+ "Result").toString());//SoapObject detail = (SoapObject) result.getProperty(methodName//+ "Result");return result.getProperty(methodName+"Result").toString();}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (XmlPullParserException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}//没有userID的电话信息查询public static String getLocationInfo(String mobileCode){return getLocationInfo(mobileCode, "");}}


在使用android访问Web Service的时候,需要在工程中导入ksoap2-android的jar包,下载地址:ksoap2-android

工程右键-》Builder Path-》Add External Archives-》选择要导入的包。

导入包之后还需要BuilderPath-》中Config中在ksoap2-android的jar包前打上勾。

另外,还需要在Androidmanifest.xml中添加user-permission权限,在<manifest...></manifest>之间添加

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

即可

另外,获得WebService返回值的方法有两种:

(1)使用getResponse方法返回数据。

(2)使用bodyId及getProperty方法返回数据。









更多相关文章

  1. 关于android中的宏定义查找
  2. Android 通过intent 传递对象
  3. android获取控件的几种方法
  4. android 自定义dialog去掉白色背景
  5. Android增加自定义监听事件
  6. Android 自定义日期和时间和星期的弹窗
  7. Android studio自定义变量
  8. Android Seek自定义样式
  9. Android 获取手机屏幕大小两种方法

随机推荐

  1. Android(安卓)复杂的列表视图新写法 Mult
  2. android 实用干货 - 收藏集 - 掘金
  3. react-native启动流程(android端)
  4. 浅析android的mvp模式
  5. Android零基础入门第84节:引入Fragment原
  6. Android实现自定义字体格式液晶数字
  7. Android中集成支付宝
  8. Android(安卓)系统复习面试系列(二)反射原
  9. 一步一步在 Windows下搭建 React Native
  10. Android(安卓)Studio 解决引入java.awt.*