加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Webservice请求的使用方法

发布时间:2020-12-17 00:22:23 所属栏目:安全 来源:网络整理
导读:在iphone的开发当中,会涉及到很多的服务,比如说获取天气,获取IP地址,获取手机归属地的功能。这些功能实际上使用的是webservice的功能。这个功能在iphone开发当中,应该是非常常用的功能。 具体的webservice地址为:www.webxml.com.cn,这个地址,提供了

在iphone的开发当中,会涉及到很多的服务,比如说获取天气,获取IP地址,获取手机归属地的功能。这些功能实际上使用的是webservice的功能。这个功能在iphone开发当中,应该是非常常用的功能。


具体的webservice地址为:www.webxml.com.cn,这个地址,提供了上述提到的各种功能。


在程序中,使用webservice的方法,总体来说有两种方法。


1、使用soap的POST请求的方法,发送xml的soap格式的消息,然后获得xml格式的结果,然后在做parse,就可以完成相关内容的处理了。


? NSString *province=[NSStringstringWithFormat:@"上海"];
??? //设置soap请求信息
NSString *soapString=[[NSStringalloc] initWithFormat:@"<?xml version="1.0" encoding="utf-8"?>"
? "<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" "
? "xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">"
? "<soap:Body>"
? "<getWeatherbyCityName xmlns="http://WebXml.com.cn/">"
? "<theCityName>%@</theCityName>"
? "</getWeatherbyCityName>"
? "</soap:Body>"
? "</soap:Envelope>",province];
???
??? NSLog(@"%@",soapString);
??? //soap请求地址
??? NSURL *url=[[NSURLalloc] initWithString:@"http://www.webxml.com.cn/WebServices/WeatherWebService.asmx"];
??? //请求
??? NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:url];
??? //设置请求头部
??? ////设置ContentType
??? [request addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
??? ////设置SOAPAction
??? [request addValue:@"http://WebXml.com.cn/getWeatherbyCityName" forHTTPHeaderField:@"SOAPAction"];
??? //设置Content-length
??? [request addValue:[NSStringstringWithFormat:@"%d",[soapString length]] forHTTPHeaderField:@"Content-Length"];
??? //设置请求类型 POST或GET
??? [request setHTTPMethod:@"POST"];
??? //设置请求Body(只有post方式有)
??? [request setHTTPBody:[soapString dataUsingEncoding:NSUTF8StringEncoding]];
??? //连接
??? NSURLConnection *connection=[NSURLConnection connectionWithRequest:request delegate:self];
???
??? if (connection) {
??????? webData=[NSMutableData data];
??? }
}

_________ViewController文件_____________
#import <UIKit/UIKit.h>
//注意使用的协议
@interface WebServiceViewController : UIViewController<NSURLConnectionDelegate,NSURLConnectionDataDelegate>{
??? NSMutableData *webData;
??? UIWebView *myWebView;
??? UITextField *textFiled;
}

@property (strong,nonatomic) NSMutableData *webData;
@property (strong,nonatomic) UIWebView *myWebView;
@property (strong,nonatomic) UITextField *textFiled;

-(void) buttonClicked:(id) sender;

@end

---------NSURLConnectionDelegate,NSURLConnectionDataDelegate实现方法---------
//接收相应的时候触发
-(void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
??? [webData setLength:0];
}
//接收数据的时候触发
-(void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
??? [webData appendData:data];
}
//全部完成时触发
-(void) connectionDidFinishLoading:(NSURLConnection *)connection{
??? NSString *dataString=[[NSStringalloc] initWithBytes:[webDatabytes] length:[webDatalength] encoding:NSUTF8StringEncoding];
??? NSLog(@"%@",dataString);
}

-(void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
??? NSLog(@"Error:%@",error);
}


2、方法是直接获取NSData的数据


NSString *weatherRequestUrlStr = [NSString stringWithFormat:@"%@%@",kWeatherServiceURLStr,[[ipCityLocation citySimpleName] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSLog(@"request = %@",weatherRequestUrlStr);
NSData *weatherReponseData = [NSData dataWithContentsOfURL:[NSURL URLWithString:weatherRequestUrlStr]];

这样通过NSData获取到响应数据,然后剩下的就是处理相应数据了。可以使用NSXMLParserDelegate,这个委托的处理方法类似于扫描的过程,从而完成parse的内容。


xmlParser = [[NSXMLParser alloc] initWithData:weatherReponseData];

[xmlParser setDelegate:self];
[xmlParser setShouldProcessNamespaces:NO];
[xmlParser setShouldReportNamespacePrefixes:NO];
[xmlParser setShouldResolveExternalEntities:NO];


分析的内容格式如下:

<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://WebXml.com.cn/">
<string> 直辖市 </string>
<string> 上海 </string>
<string> 58367 </string>
<string> 58367.jpg </string>
<string> 2012-8-13 19:47:13 </string>
<string> 28℃/35℃ </string>
<string> 8月14日 多云 </string>
<string> 南风3-4级 </string>
<string> 1.gif </string>
<string> 1.gif </string>
<string> 今日天气实况:气温:30℃;风向/风力:西北风 1级;湿度:73%;空气质量:良;紫外线强度:中等 </string>
<string>
穿衣指数:天气炎热,建议着短衫、短裙、短裤、薄型T恤衫、敞领短袖棉衫等清凉夏季服装。 感冒指数:暂无。 运动指数:天气较好,较适宜于户内运动,因气温较高,适当降低运动强度,风力较强,在户外运动注意防风。 洗车指数:适宜洗车,未来持续两天无雨天气较好,适合擦洗汽车,蓝天白云、风和日丽将伴您的车子连日洁净。 晾晒指数:天气不错,适宜晾晒。赶紧把久未见阳光的衣物搬出来吸收一下太阳的味道吧! 旅游指数:白云飘飘,温度高,让人感觉热,幸好风比较大,能缓解炎热的天气。外出旅游请注意防暑降温和防晒。 路况指数:天气较好,路面比较干燥,路况较好,不过天气有点热,定期让车辆休息。 舒适度指数:天气较好,但会使您感到有些热,不很舒适。 空气污染指数:气象条件有利于空气污染物稀释、扩散和清除,可在室外正常活动。 紫外线指数:属中等强度紫外线辐射天气,外出时建议涂擦SPF高于15、PA+的防晒护肤品,戴帽子、太阳镜。
</string>
<string> 27℃/36℃ </string>
<string> 8月15日 多云 </string>
<string> 南风3-4级 </string>
<string> 1.gif </string>
<string> 1.gif </string>
<string> 27℃/34℃ </string>
<string> 8月16日 多云 </string>
<string> 西南风3-4级 </string>
<string> 1.gif </string>
<string> 1.gif </string>
<string>
上海简称:沪,位置:上海地处长江三角洲前缘,东濒东海,南临杭州湾,西接江苏,浙江两省,北界长江入海,正当我国南北岸线的中部,北纬31°14′,东经121°29′。面积:总面积7823.5平方公里。人口:人口1000多万。上海丰富的人文资源、迷人的城市风貌、繁华的商业街市和欢乐的节庆活动形成了独特的都市景观。游览上海,不仅能体验到大都市中西合壁、商儒交融、八方来风的氛围,而且能感受到这个城市人流熙攘、车水马龙、灯火璀璨的活力。上海在中国现代史上占有着十分重要的地位,她是中国共产党的诞生地。许多震动中外的历史事件在这里发生,留下了众多的革命遗迹,处处为您讲述着一个个使人永不忘怀的可歌可泣的故事,成为包含民俗的人文景观和纪念地。在上海,每到秋祭,纷至沓来的人们在这里祭祀先烈、缅怀革命历史,已成为了一种风俗。大上海在中国近代历史中,曾是风起云涌可歌可泣的地方。在这里荟萃多少风云人物,散落在上海各处的不同住宅建筑,由于其主人的非同寻常,蕴含了耐人寻味的历史意义。这里曾留下许多革命先烈的足迹。瞻仰孙中山、宋庆龄、鲁迅等故居,会使您产生抚今追昔的深沉遐思,这里还有无数个达官贵人的住宅,探访一下李鸿章、蒋介石等人的公馆,可以联想起主人那段显赫的发迹史。
</string>
</ArrayOfString>

上述就是NSMutableArray 的格式,逐个的分析和解释字符串。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读