当前位置:首页>优优资讯 > 软件教程 > 电脑软件教程 > iOS开发:ASIHTTPRequest其他特性和Debug选项

iOS开发:ASIHTTPRequest其他特性和Debug选项

作者:本站整理 时间:2015-09-29


  其他特性
 
  设置user agent
 
  这样设置用户代理:
 
  [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:
 
  [request setUserAgent:@"MyApp 1.0"];
 
  当程序进入后台运行时,继续执行request(iOS)
 
  // iOS 4以上
  [request setShouldContinueWhenAppEntersBackground:YES];
 
  监视网络活动
 
  //记录过去5秒的平均流量字节/秒
  NSLog(@"%llu",[ASIHTTPRequest averageBandwidthUsedPerSecond]);
  if ([ASIHTTPRequest isNetworkInUse]) {
  // ASIHTTPRequest 进程中有requests正在使用网络
  }
 
  禁用自动更新网络连接标示符状态(iOS)
 
  默认情况下,ASIHTTPRequest在request使用网络连接时,会自动显示网络连接标示符(iOS状态条中)。如果你想自己控制标示符,你可以禁用这个特性:
 
  [ASIHTTPRequest setShouldUpdateNetworkActivityIndicator:NO];
 
  超时自动重试
 
  设置超时自动重试最大次数为2:
 
  [request setNumberOfTimesToRetryOnTimeout:2];
 
  设置持久连接
 
  默认情况下,ASIHTTPRequest将会尝试保持对一个服务器的连接以便往后的连接到该服务器的request可以重用这个连接(这个特性可以显著地提高速度,尤其是当你会要进行很多小数据量request时)。当连接到HTTP 1.1服务器或者服务器发送keep-alive头时,持久连接会自动被使用。当服务器显式地发送”Connection:close”头时,持久连接就不会被使用。另外,默认情况下,ASIHTTPRequest不会对包含请求体(例如POST/PUT)的request使用持久连接(从1.8.1版本开始)。通过设置request,你可以强制让此类request使用持久连接:
 
  [request setRequestMethod:@"PUT"];
  [request setShouldAttemptPersistentConnection:YES];
 
  很多服务器不会在响应头中规定持久连接的持久时间,它们可能会在任何一个request完成时候关闭连接。如果一个服务器没有规定持久连接的持久时间,ASIHTTPRequest将会在一个request完成后,保持连接60秒。对于你的服务器设置来时,60可能很长,也可能很短。
 
  如果这个超时时间太长,那么可能一个request使用这个连接时,服务器可能已经关闭了这个连接。当ASIHTTPRequest遇到连接已关闭错误,它就会在一个新的连接上重试这个request。
 
  如果这个超时时间太短,而服务器却更想让这个连接保持更长时间,但是ASIHTTPRequest又开启了不必要的新连接,那么这将导致效率降低。
 
  // 设置持久连接的超时时间为120秒
  [request setPersistentConnectionTimeoutSeconds:120];
  // 彻底禁用持久连接
  [request setShouldAttemptPersistentConnection:NO];
 
  强制使用HTTP 1.0
 
  [request setUseHTTPVersionOne:YES];
 
  禁用安全证书校验
 
  如果你有一个自签名的证书,你可能想禁用证书校验来做测试。这里我建议你从一个可信的CA购买证书,并为生产(production)期的app(梦维:app还有测试期等等阶段不是?)启用证书校验。
 
  [request setValidatesSecureCertificate:NO];
 
  Debug选项
 
  ASIHTTPRequest提供少量的有助于调试request行为的宏标记。这些宏可以从ASIHTTPRequestConfig.h文件中找到。
 
  当打开这些标志时,request将会打印一些信息到控制台,显示它们正在做什么。
 
  DEBUG_REQUEST_STATUS
 
  打印request的生命周期的所有信息,开始,结束上载,结束下载。
 
  DEBUG_THROTTLING
 
  打印request使用了多少流量(大致),如果request的流量被控制,打印如何被控制。当与DEBUG_REQUEST_STATUS结合使用时,这一项可以用来调试“超时”,你可以看到request停止发送或接收数据的时间点。
 
  DEBUG_PERSISTENT_CONNECTIONS
 
  打印request如何重用持久连接的信息,如果你看到这样的信息:
 
  Request attempted to use connection #1, but it has been closed – will retry with a new connection
 
  这说明你设置的persistentConnectionTimeoutSeconds 太大了。
 
  DEBUG_HTTP_AUTHENTICATION
 
  1.8.1版本的新特性:开启这一项会打印request如何处理HTTP授权(Basic,Digest或者NTLM)的相关信息。
 
  DEBUG_FORM_DATA_REQUEST
 
  打印出ASIFormDataRequest将发送的整个request体。使用ASIFormDataRequest时,这一项很有用。
 

相关文章

相关推荐

最新攻略

用户评论

(已有0条评论)
表情
注:您的评论需要经过审核才能显示哦,请文明发言!
还没有评论,快来抢沙发吧!