VC++ 使用MSSOAP访问WebService天气服务(客户端开发)
绪论
本文介绍使用VC++编程实现访问天气Web服务的简单实例(例子来源于网络)。
Web天气服务
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx
天气预报 Web 服务,数据每2.5小时左右自动更新一次,准确可靠。包括 340 多个中国主要城市和 60 多个国外主要城市三日内的天气预报数据。
查询本天气预报Web Services支持的国内外城市或地区信息
输入参数:byProvinceName = 指定的洲或国内的省份,若为ALL或空则表示返回全部城市;返回数据:一个一维字符串数组 String(),结构为:城市名称(城市代码)。
获得本天气预报Web Services支持的洲、国内外省份和城市信息
输入参数:无;返回:DataSet 。DataSet.Tables(0) 为支持的洲和国内省份数据,DataSet.Tables(1) 为支持的国内外城市或地区数据。DataSet.Tables(0).Rows(i).Item("ID") 主键对应 DataSet.Tables(1).Rows(i).Item("ZoneID") 外键。
Tables(0):ID = ID主键,Zone = 支持的洲、省份;Tables(1):ID 主键,ZoneID = 对应Tables(0)ID的外键,Area = 城市或地区,AreaCode = 城市或地区代码。
获得本天气预报Web
Services支持的洲、国内外省份和城市信息
输入参数:无; 返回数据:一个一维字符串数组 String(),内容为洲或国内省份的名称。
根据城市或地区名称查询获得未来三天内天气情况、现在的天气实况、天气和生活指数
调用方法如下:输入参数:theCityName = 城市中文名称(国外城市可用英文)或城市代码(不输入默认为上海市),如:上海 或 58367,如有城市名称重复请使用城市代码查询(可通过 getSupportCity 或 getSupportDataSet 获得);返回数据: 一个一维数组 String(22),共有23个元素。
String(0) 到 String(4):省份,城市,城市代码,城市图片名称,最后更新时间。String(5) 到 String(11):当天的 气温,概况,风向和风力,天气趋势开始图片名称(以下称:图标一),天气趋势结束图片名称(以下称:图标二),现在的天气实况,天气和生活指数。String(12) 到 String(16):第二天的 气温,概况,风向和风力,图标一,图标二。String(17) 到 String(21):第三天的 气温,概况,风向和风力,图标一,图标二。String(22) 被查询的城市或地区的介绍
下载天气图标(包含大、中、小尺寸) 天气图例说明 调用此天气预报Web
Services实例下载 (VB ASP.net 2.0)
根据城市或地区名称查询获得未来三天内天气情况、现在的天气实况、天气和生活指数(For商业用户)
调用方法同
getWeatherbyCityName,输入参数:theUserID = 商业用户ID
Microsoft SOAP Toolkit
3.0
SOAP(简单对象访问协议)是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息。
微软提供了SOAP协议的SDK,SOAP
Toolkit3.0是基于COM的一套SOAP开发组件。 Microsoft SOAP Toolkit 3.0 提供一个灵活的框架,可以为各种
Intranet 和
Internet 解决方案构建可伸缩的
Web 服务。
下载安装:https://www.neowin.net/news/microsoft-soap-toolkit-30
VC++ 访问WeatherWebService
基本步骤:
1.导入类型库
2.需要创建一个SoapConnector
3.下一步创建SoapSerializer
4.下一步把消息附加到SoapConnector的输入流
5.下一步读取结果.要读取服务器的回复,客户端应用需要使用SoapReader,
6.SoapReader被连接到SoapConnector输出流
7.用IXMLDOMElement对象可以从SoapReader里读到服务器的回复
附录:
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 |
#include "WeatherWS.h "
int main(void) string wea[]; cin.get(); // WeatherWS.h : interface for the CWeatherWS class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_WEATHERWS_H__B1272FDC_06B4_4C5C_8B33_9D4A35AF336C__INCLUDED_) #pragma once #include <stdio.h> #import "msxml3.dll" //SOAP使用XML作为其数据格式,因此我们还需要微软的XML Parser来处理XML内容,它包含在msxml3.dll中。 #include <string> class CWeatherWS CWeatherWS(); private: bool ConnectSuccess; #endif // !defined(AFX_WEATHERWS_H__B1272FDC_06B4_4C5C_8B33_9D4A35AF336C__INCLUDED_) // WeatherWS.cpp: implementation of the ButterflyWEB class. // ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CWeatherWS::CWeatherWS() CWeatherWS::~CWeatherWS() void CWeatherWS::ConnectInternet() //连接属性得到将要进行连接的URL //和服务器连接 // Begin message void CWeatherWS::TransMessage(const char *city) // 将serializer连接到connector的输入字符串 // 创建SOAP消息 try void CWeatherWS::getMessage(string *weather) string item[] = {"省份", "城市", "发布时间", "温度", "天气", "风向", "备注"}; //printf("Answer: %s\n", (const char*)Reader->RpcResult->text); MSXML2::IXMLDOMNodePtr DOMptr = Reader->RpcResult->firstChild; ) DOMptr = DOMptr->nextSibling;//链表指针后移 } |
最新文章
- 搭建高可用的rabbitmq集群 + Mirror Queue + 使用C#驱动连接
- opencv二值化处理
- log4net 按时间输出日志
- 初步认知java的方法
- SpringBoot-Learning
- easyUI的dateBox控制时间格式
- hdu 4114(状压dp)
- 在线教学、视频会议 Webus Fox(3) 客户端开发手册
- oracle参数与启停
- 使用JAXP进行sax解析
- 用pycharm开发django项目示例
- 【暑假】[实用数据结构] AC自动机
- bzoj2809
- js 终止页面加载
- javascript中子类如何继承父类
- 模拟美萍加密狗--Rockey2虚拟狗(五)
- 如何解决JavaScript中0.1+0.2不等于0.3
- Linux显示一行显示列总计
- vue 组件按需引用,vue-router懒加载,vue打包优化,加载动画
- 【EBook】-NO.161.微服务.1 -【微服务架构与实践】