Android 向服务器发送XML数据及调用webservice
首先讲一下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相关推荐
- Android学习笔记---29_构建soap协议内容,发送xml数据和调用webservice,手机号码归属地查询器
29_发送xml数据和调用webservice ---------------------------------------- 1.发送xml数据给web应用 a.可以通过参数的方式:比如:ht ...
- 【Android RTMP】RTMPDump 推流过程 ( 独立线程推流 | 创建推流器 | 初始化操作 | 设置推流地址 | 启用写出 | 连接 RTMP 服务器 | 发送 RTMP 数据包 )
文章目录 安卓直播推流专栏博客总结 一. Java 层传入的 RTMP 推流地址处理 二. RTMPDump 推流线程 三. 创建 RTMP 对象 四. 初始化 RTMP 对象 五. 设置 RTMP ...
- Android之通过向WebService服务器发送XML数据获取相关服务
原理图如下: 即客户端向WebService服务器通过HTTP协议发送XML数据(内部包含调用的一些方法和相关参数数据),然后WebService服务器给客户端返回一定的XML格式的数据,客户端通过解 ...
- android 上传文件到 c 服务器,android 怎么样用socket给C服务器 发送二进制数据
最近在写一个小APP,卡在android与服务器端通讯上了,大致需求是,android端发送二进制数据,文件头为0x00 0x08 0x0b,后面跟字符串的内容为abcd_efdgh, 结尾用0x00 ...
- php通过curl发送xml数据,并获取XML
php编程中经常会用到用xml格式传送数据,如调用微信等第三方接口经常用到,这里演示下php以curl形式发送xml,并通过服务器接收 一.发送xml数据 -- postXml.php <?ph ...
- Android向服务器发送图片(一)
Android向服务器发送图片(一) 作为一个Android菜鸟,花了好久时间才搞定的发送图片功能,特在此写下,希望对后者有帮助.先说说我的思路:在Android通过相册选择图片,然后利用Base64 ...
- 安卓向服务器发送List数据
第一步: 首先写一个自定义的JavaBean,以UserInfo.java为例,需要实现对象序列化的接口,因为之后输出流对象需要实现输出可序列化的对象.不这样的话,后续时发送时会报异常 package ...
- java httpclient 返回xml_通过httpClient通过post向接口发送xml数据,并处理返回的xml报文...
//maven依赖 org.apache.httpcomponents httpclient 4.5.6 importjava.io.IOException;importjava.net.URI;im ...
- unity向服务器发送xml文件格式,Unity读取Excel文件转换XML格式文件的方法
Unity读取Excel文件转换XML格式文件的方法 发布时间:2020-06-23 09:34:33 来源:亿速云 阅读:107 作者:清晨 不懂Unity读取Excel文件转换XML格式文件的方法 ...
最新文章
- 后退键无效 html,javascript – Cordova – window.history.back()不支持iOS 9中的HTML后退按钮...
- SAP Gateway currency conversion utility
- linux系统下c语言程序需要改动的地方,如何在Linux系统环境下进行C语言开发
- 华为防火墙USG6320透明模式配置
- redis需要掌握的知识点
- Joomla模板制作教程(转)
- conda clean -i
- 【算法】排序_基数排序
- Python 常用官方文档整理(中文版)
- c和java搞笑动图_拍一拍搞笑高清无水印表情包大全 拍一拍gif动图搞笑有趣表情包...
- 入门OJ 3172【导游】
- 思科模拟器服务器怎么显示字样,思科模拟器服务器怎么设置网关
- 80C51汇编语言编程实验报告,80C51单片机-实验报告.doc
- android源生获取经纬度,Android获取GPS经纬度
- 零基础学python实战答案-Python3.6零基础入门与实战 PDF 带源码视频版
- 【基础入门题031】三色球问题
- ERROR 1366 (HY000): Incorrect string value: ‘\xE8\xB5\xB5\xE9\x9B\xB7‘ for column ‘s_name‘ at row 1
- 添加或修改Kindle图书封面
- 王国维《人间词话》治学经验三境界
- iconv-lite,JS字符串编解码工具
热门文章
- php产品效果图,jQuery_基于JQuery制作的产品广告效果,效果图.如下: 动画效果介绍 - phpStudy...
- python爬silverlight_Python创建Silverlight控件编写过程经验分享
- java list 重复数据_java 查找list中重复数据实例详解
- 廖雪峰讲python高阶函数求导公式_高阶函数 - 廖雪峰 Python 2.7 中文教程
- linux用户命令快捷链接,linux简单命令
- 求两条轨迹间的hausdorff距离_题型 | 圆上有n个点到直线距离为d?
- 数字图像处理课设图像的锐化_数字图像处理图像锐化处理.ppt
- 高性能RPC框架—----------------------Dubbo一站式快速入门
- 元宇宙综观—愿景、技术和应对
- 看过这五条,再离职!