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技术对外提供服务,以前没有做过类似的项目,在网上搜寻 ...
随机推荐
- teamviewer无法启动
在 Linux.Mac OS X和 Windows下都可以用,但在 Linux 下无法启动时怎么办? 笔者回家工作时,都会用 Teamviewer 连线到其他 Linux 桌面,但某天起 Teamvi ...
- 【每日一摩斯】-Troubleshooting: High CPU Utilization (164768.1) - 系列5
Oracle(用户)进程 以下这些操作都是需要消耗大量CPU资源的:解析大型查询,存储过程编译或执行,空间管理和排序. 下面这几篇文章可以帮助采集关于使用高CPU资源的进程的更多信息: Note:35 ...
- CSS——float属性备忘笔记
通过指定CSS属性float的值,从而使元素向左或向右浮动,然后由后继元素向上移动以填补前面元素的浮动而空出的可用空间.CSS的float属性,作用就是改变块元素对象的默认显示方式,HTML标签设置了 ...
- Server Tomcat v7.0 Server at localhost was unable
在eclipse启动tomcat时遇到超时45秒的问题: Server Tomcat v7.0 Server at localhost was unable to start within 45 se ...
- Delphi 拖放文件编程(覆盖WM_DROPFILES消息)
unit Unit1; interface usesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ...
- Delphi中拖动无边框窗口的5种方法
1.MouseMove事件中加入: // ReleaseCapture;// Perform(WM_SYSCOMMAND, $F017 , 0); 2.MouseDown事件中加入: // POSTM ...
- 当向计算机中存入一个float类型的数值2.2 后,在从计算机中读出输出,这时2.2 的值已经发生了变化(转)
problom : 'f1' value hava been changed when output. reason : the binary repersentation of 2.2f is : ...
- ORACLE DATABASE 10G FALSHBACK 知识整理
1.知识储备 1) 当出现介质损坏时(如数据文件丢失),任何闪回方法都毫无用处,只能执行标准的备份.还原与恢复. 2.SCN记录方法 SQL>variable x_scn number; ...
- quartz 2.1学习(一)
quartz是一种开源任务调度框架,提供了强大的任务调度机制,Quartz允许开发人员灵活地定义触发器的调度时间表,并可对触发器和任务进行关联映射.废话不多说了,介绍一下编程的基本步骤: 实现Job接 ...
- lucene做简单的文件索引
package com.mylucene; import java.io.File; import java.io.FileReader; import java.io.IOException; im ...