首先讲一下webservice概念
可以看作是网络上的API,不过不是是通过new XXX().api()调用;
调用方式:客户端发送一段xml到服务器,在xml中指定要调用的方法的名称,以及各项参数,当服务器得到内容后进行解析,解析出方法名称和参数后执行相应的方法之后,将结果也封装成xml响应发回给客户端;客户端再进行解析得到执行结果!

下面是一个例子,最常见的获取手机号码归属地的Demo

先看结果,为了方便,我把结果打印到控件台:

1、设置布局文件,这里省略,看界面都能比较简单的设计出布局文件。

2、登录到http://www.webxml.com.cn

可以看到手机号码归属地的服务请求的XML

POST /WebServices/MobileCodeWS.asmx HTTP/1.1 <!-- 请求的URI -->
Host: webservice.webxml.com.cn <!--Host主机-->
Content-Type: application/soap+xml; charset=utf-8 <!-- Content-Type -->
Content-Length: length

<?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>string</mobileCode> <!--手机号码,使用的时候用一个占位符进行替换--><userID>string</userID></getMobileCodeInfo></soap12:Body>
</soap12:Envelope>

3、将上面每二个xml添加到一个xml文件中,并放在类路径下,名为soap12.xml;其中的手机号码用占位符替换掉,并编写业务类;

public class MobileAddresService {// 获取手机号归属地public static String gerAddress(String mobile) throws Exception,IOException {String path = "http://www.webxml.com.cn/WebServices/MobileCodeWS.asmx";HttpURLConnection conn = (HttpURLConnection) new URL(path).openConnection();String soap = readSoap();soap = soap.replaceAll("\\$mobile", mobile);// 我的xml文件中手机号码用的是$mogile替换的。byte[] entity = soap.getBytes("UTF-8");conn.setDoInput(true);conn.setConnectTimeout(10000);conn.setRequestMethod("POST");conn.setRequestProperty("Content-Type", "application/soap+xml; charset=utf-8");conn.setRequestProperty("Content-Length", entity.length + "");conn.getOutputStream().write(entity);if (conn.getResponseCode() == 200) {    return parseSOAP(conn.getInputStream());}return null;}private static String parseSOAP(InputStream inputStream) throws Exception {XmlPullParser parser = Xml.newPullParser();parser.setInput(inputStream, "UTF-8");int event = parser.getEventType();while (event != parser.END_DOCUMENT) {switch (event) {case XmlPullParser.START_TAG:if ("getMobileCodeInfoResult".equals(parser.getName())) {return parser.nextText();}break;}event = parser.next();}return null;}private static String readSoap() throws Exception {InputStream ins = AddresService.class.getClassLoader().getResourceAsStream("soap12.xml");byte[] data = StreamTool.read(ins);return new String(data, "UTF-8");}
}

4、在MainActivity中,添加按钮执行响应事件,并且添加网络访问权限,将结果打印到控制台;

Android 向服务器发送XML数据及调用webservice相关推荐

  1. Android学习笔记---29_构建soap协议内容,发送xml数据和调用webservice,手机号码归属地查询器

    29_发送xml数据和调用webservice ---------------------------------------- 1.发送xml数据给web应用   a.可以通过参数的方式:比如:ht ...

  2. 【Android RTMP】RTMPDump 推流过程 ( 独立线程推流 | 创建推流器 | 初始化操作 | 设置推流地址 | 启用写出 | 连接 RTMP 服务器 | 发送 RTMP 数据包 )

    文章目录 安卓直播推流专栏博客总结 一. Java 层传入的 RTMP 推流地址处理 二. RTMPDump 推流线程 三. 创建 RTMP 对象 四. 初始化 RTMP 对象 五. 设置 RTMP ...

  3. Android之通过向WebService服务器发送XML数据获取相关服务

    原理图如下: 即客户端向WebService服务器通过HTTP协议发送XML数据(内部包含调用的一些方法和相关参数数据),然后WebService服务器给客户端返回一定的XML格式的数据,客户端通过解 ...

  4. android 上传文件到 c 服务器,android 怎么样用socket给C服务器 发送二进制数据

    最近在写一个小APP,卡在android与服务器端通讯上了,大致需求是,android端发送二进制数据,文件头为0x00 0x08 0x0b,后面跟字符串的内容为abcd_efdgh, 结尾用0x00 ...

  5. php通过curl发送xml数据,并获取XML

    php编程中经常会用到用xml格式传送数据,如调用微信等第三方接口经常用到,这里演示下php以curl形式发送xml,并通过服务器接收 一.发送xml数据 -- postXml.php <?ph ...

  6. Android向服务器发送图片(一)

    Android向服务器发送图片(一) 作为一个Android菜鸟,花了好久时间才搞定的发送图片功能,特在此写下,希望对后者有帮助.先说说我的思路:在Android通过相册选择图片,然后利用Base64 ...

  7. 安卓向服务器发送List数据

    第一步: 首先写一个自定义的JavaBean,以UserInfo.java为例,需要实现对象序列化的接口,因为之后输出流对象需要实现输出可序列化的对象.不这样的话,后续时发送时会报异常 package ...

  8. java httpclient 返回xml_通过httpClient通过post向接口发送xml数据,并处理返回的xml报文...

    //maven依赖 org.apache.httpcomponents httpclient 4.5.6 importjava.io.IOException;importjava.net.URI;im ...

  9. unity向服务器发送xml文件格式,Unity读取Excel文件转换XML格式文件的方法

    Unity读取Excel文件转换XML格式文件的方法 发布时间:2020-06-23 09:34:33 来源:亿速云 阅读:107 作者:清晨 不懂Unity读取Excel文件转换XML格式文件的方法 ...

最新文章

  1. 后退键无效 html,javascript – Cordova – window.history.back()不支持iOS 9中的HTML后退按钮...
  2. SAP Gateway currency conversion utility
  3. linux系统下c语言程序需要改动的地方,如何在Linux系统环境下进行C语言开发
  4. 华为防火墙USG6320透明模式配置
  5. redis需要掌握的知识点
  6. Joomla模板制作教程(转)
  7. conda clean -i
  8. 【算法】排序_基数排序
  9. Python 常用官方文档整理(中文版)
  10. c和java搞笑动图_拍一拍搞笑高清无水印表情包大全 拍一拍gif动图搞笑有趣表情包...
  11. 入门OJ 3172【导游】
  12. 思科模拟器服务器怎么显示字样,思科模拟器服务器怎么设置网关
  13. 80C51汇编语言编程实验报告,80C51单片机-实验报告.doc
  14. android源生获取经纬度,Android获取GPS经纬度
  15. 零基础学python实战答案-Python3.6零基础入门与实战 PDF 带源码视频版
  16. 【基础入门题031】三色球问题
  17. ERROR 1366 (HY000): Incorrect string value: ‘\xE8\xB5\xB5\xE9\x9B\xB7‘ for column ‘s_name‘ at row 1
  18. 添加或修改Kindle图书封面
  19. 王国维《人间词话》治学经验三境界
  20. iconv-lite,JS字符串编解码工具

热门文章

  1. php产品效果图,jQuery_基于JQuery制作的产品广告效果,效果图.如下: 动画效果介绍 - phpStudy...
  2. python爬silverlight_Python创建Silverlight控件编写过程经验分享
  3. java list 重复数据_java 查找list中重复数据实例详解
  4. 廖雪峰讲python高阶函数求导公式_高阶函数 - 廖雪峰 Python 2.7 中文教程
  5. linux用户命令快捷链接,linux简单命令
  6. 求两条轨迹间的hausdorff距离_题型 | 圆上有n个点到直线距离为d?
  7. 数字图像处理课设图像的锐化_数字图像处理图像锐化处理.ppt
  8. 高性能RPC框架—----------------------Dubbo一站式快速入门
  9. 元宇宙综观—愿景、技术和应对
  10. 看过这五条,再离职!