iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >在Android中调用WebService实例
  • 195
分享到

在Android中调用WebService实例

WebServiceAndroid 2022-06-06 06:06:50 195人浏览 安东尼
摘要

某些情况下我们可能需要与Mysql或者oracle数据库进行数据交互,有些朋友的第一反应就是直接在Android中加载驱动然后进行数据的增删改查。我个人不推荐这种做法,一是手机

某些情况下我们可能需要与Mysql或者oracle数据库进行数据交互,有些朋友的第一反应就是直接在Android中加载驱动然后进行数据的增删改查。我个人不推荐这种做法,一是手机毕竟不是电脑,操作大量数据费时费电;二是流量贵如金那。我个人比较推荐的做法是使用Java或PHP开发接口或者编写WEBService进行数据库的增删该查,然后Android调用接口或者WebService进行数据的交互。本文就给大家讲解在Android中如何调用远程服务器端提供的WebService。

既然是调用WebService,我们首先的搭建WebService服务器。

下面演示的就是如何通过该网站提供的手机号码归属地查询WebService服务查询号码归属地

调用地址Http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?op=getMobileCodeInfo。

首先,将请求消息保存在XML文件中,然后使用$替换请求参数,如下:

mobilesoap.xml


<span style="font-size:16px;"><?xml version="1.0" encoding="utf-8"?> 
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> 
 <soap12:Body> 
  <getMobileCodeInfo xmlns="http://WebXml.com.cn/"> 
   <mobileCode>$mobile</mobileCode> 
   <userID></userID> 
  </getMobileCodeInfo> 
 </soap12:Body> 
</soap12:Envelope></span>

  其次,设计MainActivity布局文件,
main.xml


<span style="font-size:16px;"><?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"> 
  <TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="手机号码" /> 
  <EditText 
    android:id="@+id/mobileNum"  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="" 
    /> 
  <Button 
    android:id="@+id/btnSearch" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="查询" 
    /> 
  <TextView 
    android:id="@+id/mobileAddress" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    /> 
</LinearLayout></span> 

 下面贴出MainActivity,

在Android中调用WebService还是比较简单的:请求webservice,获取服务响应的数据,解析后并显示。


<span style="font-size:16px;">package com.szy.webservice; 
import java.io.ByteArrayOutputStream; 
import java.io.InputStream; 
import java.io.OutputStream; 
import java.net.HttpURLConnection; 
import java.net.URL; 
import java.util.HashMap; 
import java.util.Map; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 
import org.xmlpull.v1.XmlPullParser; 
import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.util.Xml; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 
 
public class MainActivity extends Activity 
{ 
  private EditText mobileNum; 
  private TextView mobileAddress; 
  private static final String TAG = "MainActivity"; 
  @Override 
  public void onCreate(Bundle savedInstanceState) 
  { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    mobileNum = (EditText) this.findViewById(R.id.mobileNum); 
    mobileAddress = (TextView) this.findViewById(R.id.mobileAddress); 
    Button btnSearch = (Button) this.findViewById(R.id.btnSearch); 
    btnSearch.setOnClickListener(new View.OnClickListener() 
    { 
      @Override 
      public void onClick(View v) 
      { 
        // 获取电话号码 
        String mobile = mobileNum.getText().toString(); 
        // 读取xml文件 
        InputStream inStream = this.getClass().getClassLoader().getResourceAsStream("mobilesoap.xml"); 
        try 
        { 
          // 显示电话号码地理位置,该段代码不合理,仅供参考 
          mobileAddress.setText(getMobileAddress(inStream, mobile)); 
        } catch (Exception e) 
        { 
          Log.e(TAG, e.toString()); 
          Toast.makeText(MainActivity.this, "查询失败", 1).show(); 
        } 
      } 
    }); 
  } 
   
  private String getMobileAddress(InputStream inStream, String mobile) throws Exception 
  { 
    // 替换xml文件中的电话号码 
    String soap = readSoapFile(inStream, mobile); 
    byte[] data = soap.getBytes(); 
    // 提交Post请求 
    URL url = new URL("http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx"); 
    HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
    conn.setRequestMethod("POST"); 
    conn.setConnectTimeout(5 * 1000); 
    conn.setDoOutput(true); 
    conn.setRequestProperty("Content-Type", "application/soap+xml; charset=utf-8"); 
    conn.setRequestProperty("Content-Length", String.valueOf(data.length)); 
    OutputStream outStream = conn.getOutputStream(); 
    outStream.write(data); 
    outStream.flush(); 
    outStream.close(); 
    if (conn.getResponseCode() == 200) 
    { 
      // 解析返回信息 
      return parseResponseXML(conn.getInputStream()); 
    } 
    return "Error"; 
  } 
  private String readSoapFile(InputStream inStream, String mobile) throws Exception 
  { 
    // 从流中获取文件信息 
    byte[] data = readInputStream(inStream); 
    String soapxml = new String(data); 
    // 占位符参数 
    Map<String, String> params = new HashMap<String, String>(); 
    params.put("mobile", mobile); 
    // 替换文件中占位符 
    return replace(soapxml, params); 
  } 
   
  private byte[] readInputStream(InputStream inputStream) throws Exception 
  { 
    byte[] buffer = new byte[1024]; 
    int len = -1; 
    ByteArrayOutputStream outSteam = new ByteArrayOutputStream(); 
    while ((len = inputStream.read(buffer)) != -1) 
    { 
      outSteam.write(buffer, 0, len); 
    } 
    outSteam.close(); 
    inputStream.close(); 
    return outSteam.toByteArray(); 
  } 
   
  private String replace(String xml, Map<String, String> params) throws Exception 
  { 
    String result = xml; 
    if (params != null && !params.isEmpty()) 
    { 
      for (Map.Entry<String, String> entry : params.entrySet()) 
      { 
        String name = "\\$" + entry.geTKEy(); 
        Pattern pattern = Pattern.compile(name); 
        Matcher matcher = pattern.matcher(result); 
        if (matcher.find()) 
        { 
          result = matcher.replaceAll(entry.getValue()); 
        } 
      } 
    } 
    return result; 
  } 
   
  private static String parseResponseXML(InputStream inStream) throws Exception 
  { 
    XmlPullParser parser = Xml.newPullParser(); 
    parser.setInput(inStream, "UTF-8"); 
    int eventType = parser.getEventType();// 产生第一个事件 
    while (eventType != XmlPullParser.END_DOCUMENT) 
    { 
      // 只要不是文档结束事件 
      switch (eventType) 
      { 
      case XmlPullParser.START_TAG: 
        String name = parser.getName();// 获取解析器当前指向的元素的名称 
        if ("getMobileCodeInfoResult".equals(name)) 
        { 
          return parser.nextText(); 
        } 
        break; 
      } 
      eventType = parser.next(); 
    } 
    return null; 
  } 
}</span> 

最后注意,由于需要访问网络,需要加上权限


<span style="font-size:16px;"><uses-permission android:name="android.permission.INTERNET"/></span> 

通过上面简单的例子,相信大家已经学习了如何在Android中调用WebService,最后运行效果:

您可能感兴趣的文章:在Android中访问WebService接口的方法Android开发调用WebService的方法示例Android 中利用 ksoap2 调用 WebService的示例代码Android ksoap调用webservice批量上传多张图片详解Android 通过webservice上传多张图片到指定服务器详解Android通过ksoap2传递复杂数据类型及CXF发布的webservice详细介绍Android通过Webservice操作sqlserver数据库实例代码android调用WebService实例分析android中soap协议使用(ksoap调用webservice)android调用webservice接口获取信息


--结束END--

本文标题: 在Android中调用WebService实例

本文链接: https://www.lsjlt.com/news/23242.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么在Android中调用WebService
    怎么在Android中调用WebService?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。WebService是一种基于SOAP协议的远程调用标准,通过webservic...
    99+
    2023-05-30
    android webservice
  • 在Android中使用ksoap调用webservice实现图片上传功能
    本篇文章给大家分享的是有关在Android中使用ksoap调用webservice实现图片上传功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。代码实现private Exec...
    99+
    2023-05-31
    android ksoap webservice
  • 怎么在Android中利用 ksoap2对WebService进行调用
    本篇文章给大家分享的是有关怎么在Android中利用 ksoap2对WebService进行调用 ,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。下载 ksoap2 的 jar ...
    99+
    2023-05-30
    ksoap2 android webservice
  • PHP实现调用WebService
            在一个项目中需要对接一个短信功能,给的是WebService接口,给了java的demo,但是没有PHP的demo,在一些简单的传参时候可以使用Soap来实现对接,但是当一些复杂传参的时候,soap无法传递过去,因此还是可以...
    99+
    2023-08-31
    php 开发语言
  • android调用webservice接口获取信息
    我的有一篇博客上讲了如何基于CXF搭建webservice,service层的接口会被部署到tomcat上,这一篇我就讲一下如何在安卓中调用这些接口传递参数。在lib中放入ksoap2的jar包并导入在xml 配置文件中加入:<!--...
    99+
    2023-05-30
    android webservice 接口
  • vbscript中怎么调用WebService
    本篇文章为大家展示了vbscript中怎么调用WebService,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。'获取已初始化Soap对象 Public Function...
    99+
    2023-06-08
  • Java调用CXF WebService接口的两种方式实例
    方式一:使用CXF提供的工具生成客户端代码。1. 在项目中添加CXF的依赖。2. 使用CXF提供的命令行工具生成客户端代码,命令如下...
    99+
    2023-09-16
    java
  • C#中如何使用HttpPost调用WebService
    这篇文章主要介绍了C#中如何使用HttpPost调用WebService,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。WebService服务端代码public c...
    99+
    2023-06-29
  • C#中怎么动态调用WebService
    本篇文章为大家展示了C#中怎么动态调用WebService,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。public static object InvokeWebSe...
    99+
    2023-06-18
  • java调用webService接口的代码实现
    目录什么是webservice接口webservice接口和http接口的区别如何用java代码调用webservice接口什么是webservice接口 Web Service也叫...
    99+
    2023-02-01
    java调用webService接口 java webService接口调用
  • C#中使用HttpPost调用WebService的方法
    WebService服务端代码 public class WebServiceDemo : System.Web.Services.WebService { ...
    99+
    2024-04-02
  • webservice实现springboot项目间接口调用与对象传递示例
    目录一、百度百科二、webservice的技术支持1、XML和XSD2、SOAP3、WSDL4、UDDI5、调用RPC与消息传递三、webservice的应用场景和弊端1、webse...
    99+
    2024-04-02
  • Android JNI c/c++调用java的实例
    Android JNI c/c++调用java的实例近期通过研究SDL源码 得出Android JNI  c/c++调用Java 无需新建虚拟机,这样省去很多步骤,这样调用Android JNI会变得非常容易,大家看下简单实例:具...
    99+
    2023-05-31
    android jni java
  • ASP.NET Core项目中调用WebService的方法
    一、前言 现实生产中,有一些比较老的系统对外提供的接口都是WebService形式的,如果是使用.NET Framework创建的项目调用WebService非常方便,网上有很多代码...
    99+
    2024-04-02
  • Java中WebService怎么调用天气预报
    在Java中调用天气预报的Web服务,可以通过以下步骤实现: 导入相关的库文件:在Java项目中,需要导入相关的库文件,包括SO...
    99+
    2023-10-23
    Java WebService
  • 利用Java怎么调用.NET项目中的WebService
    利用Java怎么调用.NET项目中的WebService?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1,新建.NET WebService。只在原方法上加上一个strin...
    99+
    2023-05-31
    java webservice
  • Naive与WebView在Android中怎么实现互相调用
    本篇文章为大家展示了Naive与WebView在Android中怎么实现互相调用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Android  Naive与WebView的互相调用详解An...
    99+
    2023-05-31
    android naive webview
  • jQuery中ajax调用webservice注意事项有哪些
    这篇文章给大家分享的是有关jQuery中ajax调用webservice注意事项有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。jquery ajax调用webservice...
    99+
    2024-04-02
  • 如何在PHP中使用WebService接口
    这篇文章将为大家详细讲解有关如何在PHP中使用WebService接口,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。php有什么特点1、执行速度快。2、具有很好的开放性和可扩展性。3、PHP...
    99+
    2023-06-14
  • 怎么在android中使用Palette调色板
    本篇文章为大家展示了怎么在android中使用Palette调色板,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Palette可以提取的颜色:Vibrant (有活力的)Vibrant dark(有...
    99+
    2023-05-30
    android palette
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作