ASIHTTPRequest会检测系统的代理设置,自动使用代理进行请求。从1.0.6版本开始,它还支持需要授权的PAC文件和代理。默认情况下,ASIHTTPRequest将尝试自动检测代理设置。当然也可以自己手动设置://手动设置代理服务器NSURL*url=[NSURURRLWithString:@"http://www.dreamingwish.com"];ASIHTTPRequest*request=[ASIHTTPRequestrequestWithURL:url];[requestsetProxyHost:@"192.168.0.1"];[requestsetProxyPort:3128];//另一种方法,使用代理配置脚本文件//(***使用本地pac文件)[requestsetPACurl:[NSURURLWithString:@"path/to/test.pac"]];需要授权的代理在MacOS上,ASIHTTPRequest可以自动检测需要授权的代理的凭证(前提是在系统设置中设置)。在iOS上,ASIHTTPRequest无法自动检测授权凭据,因此您要么手动使用委托向您的控制器或用户询问适当的凭据,要么让ASIAuthenticationDialog向用户询问凭据。一旦获得有效的代理凭据,该凭据将存储在keychian中(前提是启用了useKeychainPersistence)并自动重复使用。手动指定代理的凭据NSURL*url=[NSURURRLWithString:@"http://www.dreamingwish.com"];ASIHTTPRequest*request=[ASIHTTPRequestrequestWithURL:url];[requestsetProxyHost:@"192.168.0.1"];[requestsetProxyPort:3128];//为需要授权的代理设置用户名和密码[requestsetProxyUsername:@"bencopsey"];[requestsetProxyPassword:@"password"];//对于NTLMproxy,还要设置domain(NTLMproxy功能未测试)[requestsetProxyDomain:@“啦啦土地”];使用委托提供代理凭证此功能与“使用委托提供HTTP授权”的工作方式相同,但有一个区别:您的委托应响应proxyAuthenticationNeededForRequest:函数。得益于版本1.0.8中的新类ASIAuthenticationDialog,使用内置授权对话框(仅限iOS)。用于要求用户提供凭据以授权网络服务器或代理。如果您的委托不响应proxyAuthenticationNeededForRequest:函数,则默认情况下ASIHTTPRequest将显示对客户端的响应,提示用户输入授权凭据。使用ASIHTTPRequest,开发者不再需要编写额外的代码来显示授权对话框,因为ASIHTTPRequest会默认显示它。使用同步请求时不会显示代理授权对话框。如果您不限于使用代理授权对话框,那么您要么实现proxyAuthenticationNeededForRequest:,要么将shouldPresentProxyAuthenticationDialog设置为false(您的程序将无法连接到代理)。如果要改变对话框的样式,就得继承ASIHTTPRequest类,重写showProxyAuthenticationDialog来显示自己的对话框或者ASIAuthenticationDialog子类。
