afnetworking 嵌套多个http请求嵌套应该怎么处理

AFNetworking多个http请求嵌套应该怎么处理_百度知道
AFNetworking多个http请求嵌套应该怎么处理
我有更好的答案
立刻获取消息列表,在登陆成功后,在一个方法中会嵌套多个请求,比如我使用AFNetworking进行http请求
其他类似问题
为您推荐:
http请求的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁【IOS】AFNetworking 2.0中XML请求处理课题 - 操作系统当前位置:& &&&【IOS】AFNetworking 2.0中XML请求处理课题【IOS】AFNetworking 2.0中XML请求处理课题&&网友分享于:&&浏览:0次【IOS】AFNetworking 2.0中XML请求处理专题
AFNetworking 2.0中XML请求处理专题
1.1&&&&&XML请求处理
1.1.1 &xml处理机制
因为AFNetworking2.0中,对于响应返回的xml格式没有做专门的解析处理,因此需要开发者自己来做处理。在笔者的项目中,使用了一个叫AFGDataXMLRequestOperation的第三方类库来统一处理。
&&&&&&&& 该库的xml解析逻辑基于GDataXML-HTML类库。不过类库处理逻辑应该还是基于AFNetworking 1.0版本,有两处需要做适配修改,不然调试不过:
1、在responseXMLDocument方法中,将responseXMLDocument的初始化方法做了调整;
2、在setCompletionBlockWithSuccess方法中,将失败Queue self.failureCallbackQueue与成功Queueself.successCallbackQueue 统一修改为pletionQueue
AFGDataXMLRequestOperation下载地址:
/graetzer/AFGDataXMLRequestOperation
GDataXML-HTML库下载地址:
/graetzer/GDataXML-HTML
1.1.2 范例代码
NSURLRequest * request = [[NSURLRequestalloc]initWithURL:[[NSURLalloc]initWithString:@&.cn/tech/index.shtml&]];
&&& AFGDataXMLRequestOperation * xmlOpera = [AFGDataXMLRequestOperationXMLDocumentRequestOperationWithRequest:requestsuccess:
^(NSURLRequest * request,NSHTTPURLResponse * response,GDataXMLDocument * xmlDoc) {
&&&&&&& GDataXMLElement * elem = [[[xmlDocrootElement]elementsForName:@&REC&]objectAtIndex:0];
&&&&&&& NSLog(@&XMLDocumentFirst Node Name: %@&, [elemattributeForName:@&name&]);
&&& } failure:^(NSURLRequest *request,NSHTTPURLResponse * response,NSError * error,
GDataXMLDocument * xmlDoc){
&&&&&&& NSLog (@&requestFlagshipStoreDataError: %@&, error);
&&&[xmlOpera start];
1.1.3 &方法二——自己处理xml解析
因为AFNetWorking的回调中返回的responseObject是一个NSXMLParser类,用于启动并进行XML解析,所以我们也可以自己实现NSXMLParserDelegate接口,来自己实现xml解析。
1.1.4 &自定义xml解析示例代码
1.1.4.1&&xml请求处理逻辑
&&& AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManagermanager];
&&& AFXMLParserResponseSerializer * responseSer = [AFXMLParserResponseSerializernew];
&&& [manager setResponseSerializer:responseSer];
&&& NSDictionary *dict =@{@&format&:@&xml&};
&&& [manager GET:@&.cn/tech/index.shtml&&parameters:dictsuccess:^(AFHTTPRequestOperation
*operation,id responseObject){
&&&&&&& NSXMLParser * parser = (NSXMLParser *)responseO
&&&&&&& parser.delegate =self;
&&&&&&& [parser
setShouldProcessNamespaces:YES];
&&&&&&& //此法基本可行,但是处理麻烦
&&&&&&& [parser
&&&&&&& LOGDEBUG(@&requestFlagshipStoreData xml:%@&,parser);
&&& } failure:^(AFHTTPRequestOperation *operation,NSError *error) {
&&&&&&& LOGDEBUG(@&requestFlagshipStoreData Error:%@&,error);
1.1.4.2&NSXMLParserDelegate 委托处理
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma mark - NSXMLParserDelegate委托处理
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//在文档开始的时候触发
-(void)parserDidStartDocument:(NSXMLParser *)parser{
&&& LOGDEBUG(@&解析开始!&);
//解析起始标记
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementNamenamespaceURI:(NSString
*)namespaceURIqualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
&&& LOGDEBUG(@&标记:%@&,elementName);
//解析文本节点
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
&&& LOGDEBUG(@&值:%@&,string);
//解析结束标记
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementNamenamespaceURI:(NSString
*)namespaceURIqualifiedName:(NSString *)qName{
&&& LOGDEBUG(@&结束标记:%@&,elementName);
//文档结束时触发
-(void) parserDidEndDocument:(NSXMLParser *)parser{
&&& LOGDEBUG(@&解析结束!&);
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有114网址导航AFNetworking多个http请求嵌套应该怎么处理? - 开源中国社区
当前访客身份:游客 [
当前位置:
&&&&我使用AFNetworking进行http请求,在一个方法中会嵌套多个请求,比如,在登陆成功后,立刻获取消息列表,因为AFNetworking是异步请求,请问应该怎么处理?
& & 我希望能把每一个请求封装成一个业务方法,比如把获取消息列表的过程封装起来,在多个地方都可以调用,不知道该如何操作?
& & 请大家多多指教
共有3个答案
<span class="a_vote_num" id="a_vote_num_
您好,能帮我解决一下https请求需要怎么配置么
<span class="a_vote_num" id="a_vote_num_
/dake/TCNetwork
它能满足你
<span class="a_vote_num" id="a_vote_num_
更多开发者职位上
有什么技术问题吗?
满月不满的其它问题
类似的话题HTTP Content-type 与 AFNetworking - isaced
May 14, 2014
HTTP Content-type 与 AFNetworking
这篇文章主要记录一下之前爬过的一个坑,关于使用 AFNetworking 中请求数据和 HTTP 的 Content-type 关系。
在iOS端我们常用JSON来作为数据传输格式,对于HTTP网络通信框架现在也是 AFNetworking 居多,在 AFNetworking 2.0 ,有了比较大的变化,引入了 iOS 7 / Mac OS X 10.9 的 NSURLSession ,而在 AFNetworking 中对JSON、XML等数据对象都有良好的支持,在文档中就可以看到新增了 Serialization 对象,我简单画了个图以看得更清晰:
试了下百度FEX开发的在线脑图工具 kityminder ,并且是开源项目,还真方便,点还可以在线查看。
可以看到 Serialization 派生出 AFURLRequestSerialization 和 AFURLResponseSerialization ,分别作为请求数据和接受数据的序列化方式。AFURLResponseSerialization 又派生出好几种响应数据序列化方式,能正确的使用他们将给我们带来极大的方便。
像我们如果用 AFHTTPSessionManager 的话,在初始化后就会设置一个属性 responseSerializer,这就是上图所述的 AFURLResponseSerialization,告诉AFNetworking 以怎样的方式接受数据,如果后段接口都是标准的JSON数据格式,那么很愉快的就选择了 AFJSONResponseSerializer ,在请求成功的Block中的responseObject 就会是一个 AFNetworking 帮你解好档的JSON,也就是一个 NSDictionary对象。
但有时候你是否遇到明明接口是返回的JSON数据,可用 AFJSONResponseSerializer 就会报错,错误信息类似:
Request failed: unacceptable content-type: text/html
这就是因为HTTP响应头中的 Content-Type 字段对不上号,最简单的方法就是在浏览器的开发者工具中看到:
如果接口返回的 Content-Type 和实际情况不合时,有时候是因为后端开发人员不规范,我更有遇到一套接口中大多都是JSON返回,还有个别方法返回纯文本,如:“YES”,这些都是接口开发人员不规范导致的问题,作为iOS端,我们有两种解决方案:
告诉接口开发人员规范写法,你好我好大家好!(推荐)
responseSerializer 使用 AFHTTPResponseSerializer,这样就不能享受 AFNetworking 自带的JSON解析功能了,拿到 responseObject 就是一个 Data 对象,需要自己根据需要进行反序列化。
关于 Content-Type ,可能还是有些同学不太清楚的,这是HTTP的基础知识,做后端的同学应该得知道。
Content-Type,内容类型,一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件,这就是经常看到一些Asp网页点击的结果却是下载到的一个文件或一张图片的原因。 - via 百度百科
这里还找到一个 Content-Type 对照表:}

我要回帖

更多关于 afnetworking 请求头 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信