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技术对外提供服务,以前没有做过类似的项目,在网上搜寻 ...
随机推荐
- Adrnoid开发系列(二十五):使用AlertDialog创建各种类型的对话框
AlertDialog能够生成各种内容的对话框.可是每种对话框都会有这样的的结构: 类似下边这样的的: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTA ...
- Swift - 使用CATransition制作过渡动画(页面切换转场效果)
CATransition动画主要在过渡时使用,比如两个页面层级改变的时候添加一个转场效果.CATransition分为两类,一类是公开的动画效果,一类是非公开的动画效果. 1,公开动画效果: kCAT ...
- C# 验证识别基类
原文C# 验证识别基类 网上找了些代码 自己又改了下 先放出来了 处理简单的验证码足够了 001 using System; 002 using System.Collections.Generic; ...
- 翻转整数 Reverse digits of a number
两种方法翻转一个整数.顺序翻转和递归翻转 这里没考虑overflow的情况 递归的作用是使得反向处理.即从递归栈的最低端開始处理.通过绘图可得. 假设是rec(num/10): 12345 1234 ...
- JS - 循环添加 DropDownList(Select)
代码: <td style="padding-left: 10px;"> <select id="ddl_picture_3"> < ...
- 在WEB工程的web层中的编程技巧
本篇以看传智播客方立勋老师的<JDBC入门>之<实现客户关系管理案例>视频有感,从中提取方老师在设计管理系统的简单案例中对自己比较有用的部分,以便日后在开发过程中希望能有所帮助 ...
- 0 and 1
Description Andrewid the Android is a galaxy-famous detective. In his free time he likes to think ab ...
- fedora 搭建pptp vpn server
1 首先去sourceforge上下载pptpd的源码 http://sourceforge.net/projects/poptop/files/?source=navbar 2 对源码进行编译 ./ ...
- awk 正则表达式
awk 正则表达式.正则运算符详细介绍 前言:使用awk作为文本处理工具,正则表达式是少不了的. 要掌握这个工具的正则表达式使用.其实,我们不必单独去学习它的正则表达式.正则表达式就像一门程序语言,有 ...
- Mysql 5.1升级为mysql 5.6遇到的问题及解决方式
yum是不可行的.因为yum源没更新,我已经使用了163网易的源,但是还是不行.最新版仍然不是5.6.没办法,mysql分区是5.5之后的功能,要使用分区功能,就必须升级.. 去官网下载地址:http ...