请求json和xml数据时的方式
当请求xml数据时,直接通过NSMutableData接收后解析,
NSURL *url = [NSURL URLWithString:PATH];
_receiveData = [[NSMutableData alloc] initWithContentsOfURL:url];
GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:_receiveData encoding:NSUTF8StringEncoding error:nil];
GDataXMLElement *root = [doc rootElement];
而请求的是json数据时,需要使用NSURLConnection的对象和协议方法来异步请求数据,该方法是苹果系统提供的.
NSURL *url=[NSURL URLWithString:path];
将请求的服务器地址封装在一个请求对象
NSURLRequest *request=[NSURLRequest requestWithURL:url];
创建一个对象,自动将比较费时的请求数据的操作启动一个子线程去执行,数据请求到后通过协议方法回到UI
_urlConnection=[[NSURLConnection alloc]initWithRequest:request delegate:self];
协议方法
//当请求过程中出现错误(没有网络,请求超时。。。)时执行此协议方法
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error;
接收到服务器响应请求时执行的协议方法,response是服务器对客户端请求的一个响应对象
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
//响应应该是NSHTTPURLResponse类型的
NSHTTPURLResponse *res=(NSHTTPURLResponse*)response;
//获取响应的头部
NSLog(@"%@",res.allHeaderFields);
//响应的状态码:200成功,404资源不存在
NSLog(@"%ld",res.statusCode);
//清空缓冲区的数据
[_receiveData setLength:0];
}
//请求到数据data,如果数据量很大,该方法会被调用多次
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[_receiveData appendData:data];
}
//请求结束,数据接收完毕调用此协议方法
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
//1、解析数据
NSDictionary *dict=[NSJSONSerialization JSONObjectWithData:_receiveData options:NSJSONReadingMutableContainers error:nil];
NSArray *array=dict[@"users"];
[_dataArray addObjectsFromArray:array];
//2、刷新界面
[self.tableView reloadData];
}
请求json和xml数据时的方式的更多相关文章
- iOS开发——网络Swift篇&JSON与XML数据解析
JSON与XML数据解析 JSON数据解析(内置NSJSONSerialization与第三方JSONKit) 一,使用自带的NSJSONSerialization 苹果从IOS5.0后推出了SD ...
- Ajax--PHP+JQuery+Ajax解析json、XML数据、加载页面
一.JQuery+Ajax用get.post方式提交和请求数据 知识要点: $('#userName').blur(function () { var txt = $(this).val(); $.a ...
- php生成json或者xml数据
, ,'数据返回成功',$arr);echo $xml;?>
- wcf序列化大对象时报错:读取 XML 数据时,超出最大
错误为: 访问服务异常:格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://tempuri.org/ 进行反序列化时出 错: request.InnerException 消息是“反序 ...
- InnerException 消息是“反序列化对象 属于类型 *** 时出现错误。读取 XML 数据时,超出最大字符串内容长度配额 (8192)。(注意细节)
WEB站点在调用我们WCF服务的时候,只要传入的参数过长,就报如下错误: 格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://tempuri.org/ 进行反序列化时出错: formD ...
- C#解析json和xml数据
C#解析json和xml数据 // 用到的包using Newtonsoft.Json; // using Newtonsoft.Json.Linq; const string value = &qu ...
- Web Service 或 WCF调用时读取 XML 数据时,超出最大字符串内容长度配额(8192)解决方法
1.调用服务时服务 当我们使用 Web Service 或 WCF 服务时,常把读取的数据转化为string类型(xml格式),当数据量达到一 定数量时,会出现以下异常: 错误:格式化程序尝试对消息反 ...
- 读取 XML 数据时,超出最大字符串内容长度配额 (8192)
格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://www.thermo.com/informatics/xmlns/limswebservice 进行反序列化时出错: Process ...
- 格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://tempuri.org/ 进行反序列化时出错: GetLzdtArticleResult。InnerException 消息是“反序列化对象 属于类型 lzdt.DTO.Dtolzdt[] 时出现错误。读取 XML 数据时,超出最大
当遇到这个错误的时候郁闷了好长时间报错是字符串长度过大可是修改了MaxStringContentLength”属性的值却不起作用最后才发现还是因为配置文件配置的问题在服务端 格式化程序尝试对消息反序列 ...
随机推荐
- PHP使用CURL获取302跳转后的地址实例
/*返回一个302地址*/ function curl_post_302($url, $vars) { $ch = curl_init(); curl_setopt($ch ...
- Problem #3263 丽娃河的狼人传说 区间满足灯数,r排序后贪心。
丽娃河的狼人传说 Time limit per test: 1.0 seconds Time limit all tests: 1.0 seconds Memory limit: megabytes ...
- hbuilder mui如何监听搜索框点击清除按钮
监听代码如下: mui(".mui-icon-clear")[0].addEventListener('tap',function(){ console.log(456)}) ...
- 转载:tar 解压缩命令~
转载自:http://blog.csdn.net/dunyanan1/article/details/38869059tar -c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文 ...
- ApiDoc 和 Swagger 接口文档
ApiDoc:https://blog.csdn.net/weixin_38682852/article/details/78812244 Swagger git: https://github.co ...
- 生产者——消费者模型的java代码实现
生产者 import java.util.Random; public class Producer extends Thread { private Storage<Product> s ...
- SharePoint服务器端对象模型 之 序言
对于刚刚开始接触SharePoint的开发人员,即使之前有较为丰富的ASP.NET开发经验,在面对SharePoint时候可能也很难找到入手的方向.对于任何一种开发平台而言,学习开发的过程大致会包括: ...
- 微信小程序开发遇见的问题之一
在开发的时候,因为要定位到当前的城市,而小程序提供的API只是能够获取当前的经纬度,所以我们需要通过接入百度地图的API.调接口的时候发现报错,说域名不合法,此时千万不要着急,只要你登录你的微信开发公 ...
- jQuery插件——1.编写规则
jQuery插件编写规则如下: 1.命名规则:jquery.[插件名称].js 2.所有对象方法都应当附加到jQuery.fn对象上:所有的全局方法都应当附加到jQuery对象上. 3.在插件内部,t ...
- iOS响应超出View范围点击事件
// 在view中重写以下方法,其中self.button就是那个希望被触发点击事件的按钮 - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent ...