Android开发调用WebService的方法示例
背景介绍
在移动互联网技术快速发展的今天,Web服务在Android平台的应用越来越广泛,为了更好地利用现有的Web服务资源,Android开发者需要掌握如何在自己的应用中调用WebService,本文将详细介绍如何在Android平台上通过Ksoap2-android库调用WebService,并解析返回的XML数据。
一、获取WebService
我们需要找到一个提供WebService的网站,这里以WebXml为例,其官网提供了多个可供调用的WebService接口,我们选择其中一个进行演示,如查询手机号码归属地的Web service,其WSDL为http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl。
二、下载第三方jar包
在Android平台上调用WebService需要依赖于第三方类库Ksoap2,我们可以从以下链接下载ksoap2-android的最新版本:http://code.google.com/p/ksoap2-android/downloads/list,下载完成后,将jar包复制到Android项目的libs目录中,并在项目属性中将其添加到构建路径中。
三、编写布局文件
我们需要编写Android项目的布局文件,在res/layout目录下创建一个名为main.xml的文件,内容如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingTop="5dip" android:paddingLeft="5dip" android:paddingRight="5dip"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="手机号码(段):" /> <EditText android:id="@+id/phone_sec" android:layout_width="fill_parent" android:layout_height="wrap_content" android:inputType="textPhonetic" android:singleLine="true" android:hint="1398547" /> <Button android:id="@+id/query_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:text="查询" /> <TextView android:id="@+id/result_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal|center_vertical" /> </LinearLayout>
四、实现代码
在MainActivity类中实现查询功能,在onCreate方法中初始化界面元素,并为按钮设置点击事件监听器,当用户点击按钮时,触发showWeather方法。
public class MainActivity extends Activity { private static final String NAMESPACE = "http://WebXml.com.cn/"; private static String URL = "http://www.webxml.com.cn/webservices/weatherwebservice.asmx"; private static final String METHOD_NAME = "getSupportCity"; private static String SOAP_ACTION = "http://WebXml.com.cn/getSupportCity"; private String weatherToday; private Button okButton; private SoapObject detail; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); okButton = (Button) findViewById(R.id.query_btn); okButton.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { showWeather(); } }); } private void showWeather() { String city = "武汉"; getWeather(city); } private void getWeather(String city) { new Thread(new Runnable() { public void run() { SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); request.addProperty("theCityCode", getCityCode(city)); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.bodyOut = request; envelope.dotNet = true; try { HttpTransportSE httpTransport = new HttpTransportSE(URL); httpTransport.call(SOAP_ACTION, envelope); if (envelope.getResponse() != null) { final String str = envelope.bodyIn.toString(); runOnUiThread(new Runnable() { public void run() { try { weatherToday = parse(str).get(0); resultText.setText(weatherToday); } catch (Exception e) { e.printStackTrace(); } } }); } } catch (Exception e) { e.printStackTrace(); } } }).start(); } private String getCityCode(String cityName) { // 根据城市名称获取城市代码的逻辑(此处省略) return "hb"; // 假设返回湖北的城市代码 } private List<String> parse(String str) { // 解析返回的XML数据的逻辑(此处省略) // 假设返回一个包含天气信息的列表 List<String> list = new ArrayList<>(); list.add("晴"); return list; } }
五、运行结果与测试
完成上述步骤后,我们就可以在Android设备上运行我们的应用程序了,输入一个手机号码段并点击“查询”按钮,应用程序将会调用WebService并显示查询结果,如果一切正常,你应该能够在屏幕上看到手机号码的归属地信息。
六、归纳与展望
本文介绍了在Android平台上如何使用Ksoap2-android库调用WebService,并解析返回的XML数据,通过一个简单的实例,我们演示了从新建工程、添加jar包到编写代码、处理返回结果的全过程,希望本文能帮助初学者更好地理解和掌握在Android平台上调用WebService的方法,随着技术的不断发展和完善,我们期待有更多高效、便捷的工具和方法能够帮助开发者更好地利用Web服务资源。
各位小伙伴们,我刚刚为大家分享了有关“Android开发调用WebService的方法示例”的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/625311.html