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" >

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" >

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

时间: 2024-10-25 04:43:18

WebService的相关使用的相关文章

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

WebService学习总结(四)——调用第三方提供的webService服务 互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取天气预报数据和查询国内手机号码归属地为例进行说明. 气象中心的管理系统将收集的天气信息并将数据暴露出来(通过WebService Server), 而各大站点的应用就去调用它们得到天气信息并以不同的样式去展示(WebService Client).一. 调用

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

WebService学习总结(三)——使用JDK开发WebService一.WebService的开发手段 使用Java开发WebService时可以使用以下两种开发手段 1. 使用JDK开发(1.6及以上版本) 2.使用CXF框架开发(工作中)二.使用JDK开发WebService2.1.开发WebService服务器端 1.定义一个interface,使用@WebService注解标注接口,使用@WebMethod注解标注接口中定义的所有方法,如下所示:复制代码 1 package me.g

WebService学习总结(3)——使用java JDK开发WebService

一.WebService的开发手段 使用Java开发WebService时可以使用以下两种开发手段 1. 使用JDK开发(1.6及以上版本) 2.使用CXF框架开发(工作中) 二.使用JDK开发WebService 2.1.开发WebService服务器端 1.定义一个interface,使用@WebService注解标注接口,使用@WebMethod注解标注接口中定义的所有方法,如下所示: 1 package me.gacl.ws; 2 3 import javax.jws.WebMethod

WebService学习总结(4)——第三方webService服务调用

互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取天气预报数据和查询国内手机号码归属地为例进行说明. 气象中心的管理系统将收集的天气信息并将数据暴露出来(通过WebService Server), 而各大站点的应用就去调用它们得到天气信息并以不同的样式去展示(WebService Client). 一. 调用免费的web service获取天气预报信息 1.1.找到提供天气预报信息的W

webservice总结(一)

一.WebService的开发手段 使用Java开发WebService时可以使用以下两种开发手段 1. 使用JDK开发(1.6及以上版本) 2.使用CXF框架开发(工作中) 二.使用JDK开发WebService 2.1.开发WebService服务器端 1.定义一个interface,使用@WebService注解标注接口,使用@WebMethod注解标注接口中定义的所有方法,如下所示: 1 package me.gacl.ws; 2 3 import javax.jws.WebMethod

基于注解方式的XFire之WebService框架与SSJ架构集成案例

最近在给公司做一个基于webservice的数据提供接口,接口提供给第三方公司业务系统调用,完成数据对接.实现起来也相对简单,其实就是通过中间件服务提取内部系统授权数据组织相应的数据格式然后通过webservice的方式暴露获取数据接口给第三方应用,供其调用.要实现这样的需求每个公司的实现方式有可能不一样,根据每个公司实现中间件服务应用使用的实现语言而定.可选择的方案很多,比如如果你们公司的使用的C#的来实现,那么可选择的方案有WCF等技术方案:但是如果你们的中间件服务实现语言是java,那么实

WebService-调用第三方提供的webService服务

互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取天气预报数据和查询国内手机号码归属地为例进行说明. 气象中心的管理系统将收集的天气信息并将数据暴露出来(通过WebService Server), 而各大站点的应用就去调用它们得到天气信息并以不同的样式去展示(WebService Client). 一. 调用免费的web service获取天气预报信息 1.1.找到提供天气预报信息的W

关于C# WebService的一些看法

前端时间,遇到一个需求,要求我写一个短信平台,通过我们的系统可以发送短信给系统中人员.当时我就感觉很是迷茫,后来查了下,于是找了一个短信代理商,他们给了我webService的接口,我于是就上网查了下webService的相关知识,最后通过努力还是写出来了.这里就向大家分享下我解决问题的过程: 1.了解webService的定义 这个我在网上查到了,这里就也和大家提一提: Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intra

webservice(CXF)基于3.1.1版本实例

引言 有没有一种办法可以实现跨应用程序进行通信和跨平台进行通信呢? 换句话说,就是有什么办法可以实现我的应用程序 A 可以和应用程序 B 进行通信呢? 或者说是,我用 Java 写的应用程序和用 . Net 开发的应用程序之间进行通信呢? 很多时候,上面提到的这些,我们是必须要使用的,比如,一个跨应用程序吧. 举一个日常生活的例子吧,我们平常都会使用QQ上面的天气预报功能 吧,那么这个功能是怎么实现的呢? WebService简介 如果简单的说的话,WebServices就是一组函数库,但是又有