WebService的相关使用
近期公司项目使用WebService ,这里简单做个总结。
事实上详细使用细节有些情况下须要改,还须要看实际情况,须要与server联调,详细沟通。
比方公司连接,非要把envelope.dotNet = true; 设置为false, 某个<soap12:operation soapAction="http://WebXml.com.cn/getCountryCityByIp" style="document"/>
soapAction为空的。就不能使用soapAction来訪问,有的传递參数是json字符串......
公共接口非常多:http://www.webxml.com.cn/zh_cn/index.aspx
这里使用获取天气接口:
直接上代码吧。
比較简单,因为时间关系,没有具体做。可是大体上怎样使用应该还是能够看的出来。
但,还是研究比較深要好点。
项目结构图:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHhtMjgyODI4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
package com.example.utils; /**
* <p>
* 一些须要的常量
* </p>
* 下午6:19:52
*
* @auther dalvikCoder
*/
public class Constants { /** 名字空间 **/
public static String NAME_SPACE = "http://WebXml.com.cn/";
/** webserviceserver地址 **/
public static String WEBSERVICE_URL = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx";
/** wsdl地址 **/
public static String WSDL_URL = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl"; /** 通过省份名称获取支持的城市 **/
public static String GET_SUPPORT_CITY = "getSupportCity"; /** 获取支持的省份名称 **/
public static String GET_SUPPORT_PROVINCE = "getSupportProvince"; /** 通过城市名称获取未来三天的天气情况 **/
public static String GET_WEATHER_BY_CITYNAME = "getWeatherbyCityName "; }
package com.example.utils; import java.io.IOException;
import java.util.ArrayList;
import java.util.List; import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpResponseException;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException; import android.util.Log; import com.example.model.CityModel;
import com.example.model.RegionProvince; /**
* <p>
* 用于WebService相关操作的工具类
* </p>
* 下午5:20:51
*
* @auther dalvikCoder
*/
public class WebServiceUtils { /**
* <p>
* 获取城市数据
* </p>
*
* @param soapObject
* @return List<RegionProvince>
*/
public synchronized List<RegionProvince> parseProvinceList(
SoapObject soapObject) { List<RegionProvince> list = new ArrayList<RegionProvince>();
RegionProvince province = null; String str = soapObject.getProperty(0).toString(); int start = str.indexOf("string");
// 记录最后一个;的位置
int end = str.lastIndexOf(";"); // 取start和end之间的字符串
String temp = str.substring(start, end);
// 以;为分隔符划分数组
String[] test = temp.split(";");
for (int i = 0; i < test.length; i++) {
province = new RegionProvince();
if (i == 0) {
temp = test[i].substring(7);
} else {
temp = test[i].substring(8);
}
int index = temp.indexOf(","); province.setName(temp.substring(0, index));
temp = test[i].substring(11, 15);
province.setId(temp); list.add(province);
} return list;
} public interface WebServiceCallBack { void resultCallBack();
} /**
* <p>
* 发送请求
* </p>
*
* @param soapObject
* @param methodName
* 相应的方法名称
* @return SoapObject 请求SoapObject
*/
public static SoapObject doRequest(SoapObject soapObject, String methodName) { SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER10); HttpTransportSE transportSE = new HttpTransportSE(Constants.WSDL_URL,
5 * 1000); envelope.setOutputSoapObject(soapObject);
envelope.dotNet = true;
envelope.encodingStyle = "UTF-8";
envelope.bodyOut = soapObject;
try {
transportSE.call(Constants.NAME_SPACE + methodName, envelope);
if (null != envelope.getResponse()) { return (SoapObject) envelope.getResponse(); }
} catch (HttpResponseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
} return null;
} /**
* <p>
* 获取支持的城市名称
* </p>
*
* @param provinceName
* @return List<CityModel>
*/
public static List<CityModel> getSupportCity(String provinceName) { SoapObject soapObject = new SoapObject(Constants.NAME_SPACE,
Constants.GET_SUPPORT_CITY); soapObject.addProperty("byProvinceName", provinceName); SoapObject soapObject2 = WebServiceUtils.doRequest(soapObject,
Constants.GET_SUPPORT_CITY); if (null != soapObject2) { int count = soapObject2.getPropertyCount();
CityModel cityModel = null;
List<CityModel> list = new ArrayList<CityModel>();
for (int i = 0; i < count; i++) { String str = soapObject2.getProperty(i).toString();
cityModel = new CityModel();
cityModel.setCityName(str.substring(0, 2));
cityModel.setCityCode(str.substring(4, 9));
list.add(cityModel);
} Log.i("------->请求返回结果", list.toString());
return list;
} return null;
} /**
* <p>
* 获取省份列表
* </p>
*
* @return List<CityModel>
*/
public static List<String> getSupportProvince() { SoapObject soapObject = new SoapObject(Constants.NAME_SPACE,
Constants.GET_SUPPORT_PROVINCE); SoapObject soapObject2 = WebServiceUtils.doRequest(soapObject,
Constants.GET_SUPPORT_PROVINCE); if (null != soapObject2) { List<String> list = new ArrayList<String>();
String resultStr = soapObject2.getPropertyAsString(0).toString();
int count = soapObject2.getPropertyCount();
for (int i = 0; i < count; i++) { list.add(soapObject2.getProperty(i).toString()); }
Log.i("------->请求返回结果", resultStr);
return list; } return null;
} /**
* <p>
* 获取城市具体信息
* </p>
*
* @param theCityName
* @return List<String>
*/
public static void getWeatherbyCityName(String theCityName) { SoapObject soapObject = new SoapObject(Constants.NAME_SPACE,
Constants.GET_WEATHER_BY_CITYNAME); soapObject.addProperty("theCityName", theCityName);
SoapObject soapObject2 = WebServiceUtils.doRequest(soapObject,
Constants.GET_WEATHER_BY_CITYNAME); if (null != soapObject2) { String weather = soapObject2.toString();
Log.e("------>具体具体天气信息", weather);
} } }
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHhtMjgyODI4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
WebService的相关使用的更多相关文章
- webservice CXF 相关面试题
Web Service的优点(1) 可以让异构的程序相互访问(跨平台)(2) 松耦合(3) 基于标准协议(通用语言,允许其他程序访问) 1:WEB SERVICE名词解释.JSWDL开发包的介绍.JA ...
- WebService 学习之路(一):了解并使用webService
webService主要用于向其他系统提供接口以便调用,系统间可能开发语言等完全不同,根据约定的接口规范,调用者传递相关参数进行接口调用,服务方根据传入的条件进行业务处理并进行结果返回. webSer ...
- WebService学习总结(四)——调用第三方提供的webService服务
http://www.cnblogs.com/xdp-gacl/p/4260627.html 互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他 ...
- 使用JDK开发WebService
一.WebService的开发手段 使用Java开发WebService时可以使用以下两种开发手段 1. 使用JDK开发(1.6及以上版本) 2.使用CXF框架开发(工作中) 二.使用JDK开发Web ...
- 【转】java调用webservice
互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取天气预报数据和查询国内手机号码归属地为 ...
- WebService学习总结(三)——使用JDK开发WebService
一.WebService的开发手段 使用Java开发WebService时可以使用以下两种开发手段 1. 使用JDK开发(1.6及以上版本) 2.使用CXF框架开发(工作中) 二.使用JDK开发Web ...
- android loginDemo +WebService用户登录验证
android loginDemo +WebService用户登录验证 本文是基于android4.0下的loginActivity Demo和android下的Webservice实现的.l ...
- WebService相关概念介绍
最近重新拾起WebService,之前用过Axis2开发过服务,但是非常具体的概念还不是很清楚,在此粗略总结一下. 本文重点研究以下几个问题: 1.WebService以及相关的概念介绍 ...
- Cxf + Spring3.0 入门开发WebService
转自原文地址:http://sunny.blog.51cto.com/182601/625540/ 由于公司业务需求, 需要使用WebService技术对外提供服务,以前没有做过类似的项目,在网上搜寻 ...
随机推荐
- Linux经常使用命令(十二) - less
less 工具也是对文件或其他输出进行分页显示的工具.应该说是linux正统查看文件内容的工具.功能极其强大. less 的使用方法比起 more 更加的有弹性.使用了 less 时.更easy用来查 ...
- [Java][activiti]Activiti这个过程委托功能[getAssignee()与getOwner()差异]
一.流程图: 二.流程定义文件: AssigneeUserAndGroup.bpmn 三.单元測试: ProcessTestDelegateTask.java 四.主要运行语句 // 签收 taskS ...
- Eclipse用法和技巧六:自动生成get和set方法1
java的类中,除了常量声明为静态且公有的,一般的对象数据作用域,都是声明为私有的.这样做能保护对象的属性不会被随意改变,调试的时候也会方便很多:在类的公有方法中大一个调用栈就能看到哪里改了属性值.声 ...
- 深入浅出Hive企业级架构优化、Hive Sql优化、压缩和分布式缓存(企业Hadoop应用核心产品)
一.本课程是怎么样的一门课程(全面介绍) 1.1.课程的背景 作为企业Hadoop应用的核心产品,Hive承载着FaceBook.淘宝等大佬 95%以上的离线统计,很多企业里的离线统 ...
- WEB服务器、应用程序服务器区别
WEB服务器.应用程序服务器.HTTP服务器有何区别?IIS.Apache.Tomcat.Weblogic.WebSphere都各属于哪种服务器,这些问题困惑了很久,今天终于梳理清楚了: Web服务器 ...
- Servlet的学习之Session(1)
在学习完了Servlet中的Cookie技术后,我们再来学习另一个能保存会话数据的技术——Session. Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其 ...
- zipkin分布式链路追踪系统
基于zipkin分布式链路追踪系统预研第一篇 分布式服务追踪系统起源于Google的论文“Dapper, a Large-Scale Distributed Systems Tracing Inf ...
- linux:sed高级命令之n、N(转)
sed的语法格式: sed [option] {sed-command} {input-file} sed在正常情况下,将处理的行读入模式空间(pattern space),脚本中的“sed-comm ...
- 中文分词算法之最大正向匹配算法(Python版)
最大匹配算法是自然语言处理中的中文匹配算法中最基础的算法,分为正向和逆向,原理都是一样的. 正向最大匹配算法,故名思意,从左向右扫描寻找词的最大匹配. 首先我们可以规定一个词的最大长度,每次扫描的时候 ...
- 【源代码】LinkedHashMap源代码剖析
注:下面源代码基于jdk1.7.0_11 之前的两篇文章通过源代码分析了两种常见的Map集合,HashMap和Hashtable.本文将继续介绍还有一种Map集合--LinkedHashMap. 顾名 ...