近期公司项目使用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="">

源码地址:http://download.csdn.net/detail/xxm282828/7223667

WebService的相关使用的更多相关文章

  1. webservice CXF 相关面试题

    Web Service的优点(1) 可以让异构的程序相互访问(跨平台)(2) 松耦合(3) 基于标准协议(通用语言,允许其他程序访问) 1:WEB SERVICE名词解释.JSWDL开发包的介绍.JA ...

  2. WebService 学习之路(一):了解并使用webService

    webService主要用于向其他系统提供接口以便调用,系统间可能开发语言等完全不同,根据约定的接口规范,调用者传递相关参数进行接口调用,服务方根据传入的条件进行业务处理并进行结果返回. webSer ...

  3. WebService学习总结(四)——调用第三方提供的webService服务

    http://www.cnblogs.com/xdp-gacl/p/4260627.html 互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他 ...

  4. 使用JDK开发WebService

    一.WebService的开发手段 使用Java开发WebService时可以使用以下两种开发手段 1. 使用JDK开发(1.6及以上版本) 2.使用CXF框架开发(工作中) 二.使用JDK开发Web ...

  5. 【转】java调用webservice

    互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取天气预报数据和查询国内手机号码归属地为 ...

  6. WebService学习总结(三)——使用JDK开发WebService

    一.WebService的开发手段 使用Java开发WebService时可以使用以下两种开发手段 1. 使用JDK开发(1.6及以上版本) 2.使用CXF框架开发(工作中) 二.使用JDK开发Web ...

  7. android loginDemo +WebService用户登录验证

        android loginDemo +WebService用户登录验证 本文是基于android4.0下的loginActivity Demo和android下的Webservice实现的.l ...

  8. WebService相关概念介绍

    最近重新拾起WebService,之前用过Axis2开发过服务,但是非常具体的概念还不是很清楚,在此粗略总结一下. 本文重点研究以下几个问题:     1.WebService以及相关的概念介绍    ...

  9. Cxf + Spring3.0 入门开发WebService

    转自原文地址:http://sunny.blog.51cto.com/182601/625540/ 由于公司业务需求, 需要使用WebService技术对外提供服务,以前没有做过类似的项目,在网上搜寻 ...

随机推荐

  1. JS将秒换成时分秒

    function formatSeconds(value) {    var theTime = parseInt(value);// 秒    var theTime1 = 0;// 分    va ...

  2. 如何使用NArrange进行代码优化

    Narrange是一个.NET代码管理工具.它可以对源代码自动进行美化和把类成员分成一个组.区域.目前支持C#.VB.NET,将来会支持更多.NET上的语言. 主要的作用是: ◆ 减少程序员的开发时间 ...

  3. C++辛格尔顿

    设计模式是编程的焦点.经常在面试时进行审查,Singleton模式是最简单的.最常见的.大部分的主模式.所以大部分的采访是测试考试的Singleton设计模式. 以下我们就来看看单例模式怎样实现(C+ ...

  4. iOS进阶面试题----经典10道

    OneV‘s Den在博客里出了10道iOS面试题,用他的话是:"列出了十个应聘Leader级别的高级Cocoa/CocoaTouch开发工程师所应该掌握和理解的技术" .  在这 ...

  5. VC2008下使用OpenSSL 1.0.0g(免编译)

    OpenSSL整个软件包大概可以分成三个主要的功能部分:密码算法库.SSL协议库以及应用程序. 官网:http://www.openssl.org/OpenSSL for Windows:http:/ ...

  6. golang各版本的变化

    https://golang.org/doc/https://golang.org/doc/go1.6https://golang.org/doc/go1.5https://golang.org/do ...

  7. JAVA 操作 DBF 文件数据库

    1.依赖夹包 javadbf-[].4.1.jar jconn3.jar 2.添加属性文件 jdbc.properties jdbc.driverClassName=com.sybase.jdbc3. ...

  8. 最新OpenCV2.4.6与VS2010开发环境搭建

    OpenCV2.4.6与VS2010开发环境搭建 由于很久没有用OpenCV了,之前用的是1.0版本和VC++6.0.现在已经到了VS2010+OpenCV2.4.6.安装使用之后,发现OpenCV的 ...

  9. tar打包过滤某个文件及文件夹

    ip=ip add|grep eth0|grep -i inet|awk '{print $2}'|cut -d '/' -f 1 cd /data tar -zvcf `echo $ip`_`dat ...

  10. boost计算随机数和计算crc32简单示例 - jwybobo2007的专栏 - 博客频道 - CSDN.NET

    boost计算随机数和计算crc32简单示例 - jwybobo2007的专栏 - 博客频道 - CSDN.NET     boost::crc_32_type crc32;       crc32. ...