iOS开发ASIHTTPRequest其他特性

移动开发 iOS
本文为大家介绍了iOS开发ASIHTTPRequest其他特性的内容,其中包括设置user agent,当程序进入后台运行时,继续执行request(iOS),监视网络活动,禁用自动更新网络连接标示符状态(iOS),超时自动重试,设置持久连接,强制使用HTTP 1.0,禁用安全证书校验等等内容。

设置user agent

这样设置用户代理:

  1. [ASIHTTPRequest setDefaultUserAgentString:@"MyApp 1.0"]; 

如果不设置user agent,ASIHTTPRequest会为你创建一个。例如(Mac OS程序):

My Application 1.0 (Macintosh; Mac OS X 10.5.7; en_GB)

你也可以为每个request设置user agent:

  1. [request setUserAgent:@"MyApp 1.0"]; 

当程序进入后台运行时,继续执行request(iOS)

  1. // iOS 4以上 
  2. [request setShouldContinueWhenAppEntersBackground:YES]; 

监视网络活动

  1. //记录过去5秒的平均流量字节/秒 
  2. NSLog(@"%llu",[ASIHTTPRequest averageBandwidthUsedPerSecond]); 
  3.   
  4. if ([ASIHTTPRequest isNetworkInUse]) { 
  5.     // ASIHTTPRequest 进程中有requests正在使用网络 

禁用自动更新网络连接标示符状态(iOS)

默认情况下,ASIHTTPRequest在request使用网络连接时,会自动显示网络连接标示符(iOS状态条中)。如果你想自己控制标示符,你可以禁用这个特性:

  1. [ASIHTTPRequest setShouldUpdateNetworkActivityIndicator:NO]; 

超时自动重试

设置超时自动重试最大次数为2:

  1. [request setNumberOfTimesToRetryOnTimeout:2]; 

设置持久连接

默认情况下,ASIHTTPRequest将会尝试保持对一个服务器的连接以便往后的连接到该服务器的request可以重用这个连接(这个特性可以显著地提高速度,尤其是当你会要进行很多小数据量request时)。当连接到HTTP 1.1服务器或者服务器发送keep-alive头时,持久连接会自动被使用。当服务器显式地发送”Connection:close”头时,持久连接就不会被使用。另外,默认情况下,ASIHTTPRequest不会对包含请求体(例如POST/PUT)的request使用持久连接(从1.8.1版本开始)。通过设置request,你可以强制让此类request使用持久连接:

  1. [request setRequestMethod:@"PUT"]; 
  2. [request setShouldAttemptPersistentConnection:YES]; 

很多服务器不会在响应头中规定持久连接的持久时间,它们可能会在任何一个request完成时候关闭连接。如果一个服务器没有规定持久连接的持久时间,ASIHTTPRequest将会在一个request完成后,保持连接60秒。对于你的服务器设置来时,60可能很长,也可能很短。

如果这个超时时间太长,那么可能一个request使用这个连接时,服务器可能已经关闭了这个连接。当ASIHTTPRequest遇到连接已关闭错误,它就会在一个新的连接上重试这个request。

如果这个超时时间太短,而服务器却更想让这个连接保持更长时间,但是ASIHTTPRequest又开启了不必要的新连接,那么这将导致效率降低。

  1. // 设置持久连接的超时时间为120秒 
  2. [request setPersistentConnectionTimeoutSeconds:120]; 
  3.   
  4. // 彻底禁用持久连接 
  5. [request setShouldAttemptPersistentConnection:NO]; 

强制使用HTTP 1.0

  1. [request setUseHTTPVersionOne:YES]; 

禁用安全证书校验

如果你有一个自签名的证书,你可能想禁用证书校验来做测试。这里我建议你从一个可信的CA购买证书,并为生产(production)期的app(梦维:app还有测试期等等阶段不是?)启用证书校验。

  1. [request setValidatesSecureCertificate:NO]; 
责任编辑:闫佳明 来源: dreamingwish
相关推荐

2013-07-21 18:22:59

iOS开发ASIHTTPRequ

2013-07-21 18:18:00

iOS开发ASIHttpRequ

2013-07-21 18:27:15

iOS开发ASIHTTPRequ

2013-07-22 14:33:15

iOS开发ASIHTTPRequ

2013-07-22 14:15:17

iOS开发ASIHTTPRequ

2013-07-21 18:32:13

iOS开发ASIHTTPRequ

2013-07-22 13:54:32

iOS开发ASIHTTPRequ

2013-07-22 14:43:57

iOS开发ASIHTTPRequ

2013-07-22 14:25:29

iOS开发ASIHTTPRequ

2013-07-21 18:09:21

iOS开发ASIHttpRequ创建和执行reques

2013-07-22 14:02:17

iOS开发ASIHTTPRequ

2013-07-22 13:48:55

iOS开发ASIHTTPRequ使用Cookie

2013-07-22 14:29:35

iOS开发ASIHTTPRequ

2013-03-25 14:13:23

iOSASIHTTPRequ

2013-07-21 18:04:22

ASIHttpRequiOS开发

2011-08-22 10:06:38

IOS开发ASIHTTPRequHTTP 请求

2013-07-22 14:10:26

iOS开发ASIHTTPRequ

2013-07-19 13:16:26

iOS中BlockiOS开发学习内存管理

2011-08-10 17:37:00

iPhoneASIHTTPRequ

2011-08-12 13:35:23

iPhone文件流ASIHTTPRequ
点赞
收藏

51CTO技术栈公众号