近期公司项目使用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. teamviewer无法启动

    在 Linux.Mac OS X和 Windows下都可以用,但在 Linux 下无法启动时怎么办? 笔者回家工作时,都会用 Teamviewer 连线到其他 Linux 桌面,但某天起 Teamvi ...

  2. 【每日一摩斯】-Troubleshooting: High CPU Utilization (164768.1) - 系列5

    Oracle(用户)进程 以下这些操作都是需要消耗大量CPU资源的:解析大型查询,存储过程编译或执行,空间管理和排序. 下面这几篇文章可以帮助采集关于使用高CPU资源的进程的更多信息: Note:35 ...

  3. CSS——float属性备忘笔记

    通过指定CSS属性float的值,从而使元素向左或向右浮动,然后由后继元素向上移动以填补前面元素的浮动而空出的可用空间.CSS的float属性,作用就是改变块元素对象的默认显示方式,HTML标签设置了 ...

  4. 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 ...

  5. Delphi 拖放文件编程(覆盖WM_DROPFILES消息)

    unit Unit1; interface usesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,  ...

  6. Delphi中拖动无边框窗口的5种方法

    1.MouseMove事件中加入: // ReleaseCapture;// Perform(WM_SYSCOMMAND, $F017 , 0); 2.MouseDown事件中加入: // POSTM ...

  7. 当向计算机中存入一个float类型的数值2.2 后,在从计算机中读出输出,这时2.2 的值已经发生了变化(转)

    problom : 'f1' value hava been changed when output. reason : the binary repersentation of 2.2f is : ...

  8. ORACLE DATABASE 10G FALSHBACK 知识整理

    1.知识储备 1)    当出现介质损坏时(如数据文件丢失),任何闪回方法都毫无用处,只能执行标准的备份.还原与恢复. 2.SCN记录方法 SQL>variable x_scn number; ...

  9. quartz 2.1学习(一)

    quartz是一种开源任务调度框架,提供了强大的任务调度机制,Quartz允许开发人员灵活地定义触发器的调度时间表,并可对触发器和任务进行关联映射.废话不多说了,介绍一下编程的基本步骤: 实现Job接 ...

  10. lucene做简单的文件索引

    package com.mylucene; import java.io.File; import java.io.FileReader; import java.io.IOException; im ...