android如何调用Web Service手机归属地练习
16lz
2021-01-23
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方法返回数据。
更多相关文章
- 关于android中的宏定义查找
- Android 通过intent 传递对象
- android获取控件的几种方法
- android 自定义dialog去掉白色背景
- Android增加自定义监听事件
- Android 自定义日期和时间和星期的弹窗
- Android studio自定义变量
- Android Seek自定义样式
- Android 获取手机屏幕大小两种方法