1、使用 Flex代码清除 ArcGIS Server 10 REST缓存1 在我们的基于 REST API进行开发的应用系统中,经常会遇到需要清除 REST cache的情况,例如服务发生变化或者新增、删除服务的时候。这些情况下在 ArcGIS10 之前的版本时,只能够手工的去清除 REST Cache。2 在 ArcGIS 10中,REST API 新增加了清除 REST cache的方法,具体流程是:首先使用generateToken 方法生成 toeken,然后使用 token调用 cache/clear方法去清除缓存。2.1 generateToken方法的 Url为:http:/gen
2、erateToken其中 admin-url为 http:/admin,例如 http:/zbc/arcgis/rest/admin在调用这个方法的时候,需要使用 POST方法,其中 POST的参数主要有:参数 细节f响应返回的格式,默认返回 html值为:html或 jsonusername REST 管理员的用户名Password REST 管理员的密码client生成 token使用的 IP地址或者 HTTP Referer值为 ip,requestip 或 referer当值为 ip时,ip 参数必须填写当值为 referer, referer 参数必须填写当值为 requestip时
3、,ip 和 referer参数不必填写,系统会使用当前发送 HTTP请求的ip地址来生成 token,一般来说使用该选项,除非生成 token和清除 cache不是由同一个ip或 referer的程序完成。refererclient=referer时候有效,需要输入调用REST Admin 的基础网址,例如:referer=http:/myserver/mywebappipclient=ip时有效,需要输入调用 REST Admin 的 ip,例如 ip=10.14.102.85expirationToken超时时间,单位为分钟,默认为10分钟,token 有效期最长为10天该方法的返回结果为
4、(JSON):“token”: “”,“expires”: /the time (in milliseconds from epoch) when this token will expire2.2 清除缓存方法的 Url为http:/cache/clear?token=admin-url 上面已经提到,为 http:/admin,例如http:/zbc/arcgis/rest/admin这是一个 GET方法,只需要在 http:/cache/clear后面加上 token参数即可,此处的 token即为我们上面通过 generateToken方法得到的 token。该方法的另外一个参数为 f
5、,即返回数据格式,值为 html或 json,默认为 html该方法的返回结果为(JSON):“success”: true /the value will always be true. Failure will result in an error response.如果 success参数的结果为 true,则清除成功,否则失败。3 Flex 代码实现经过我们上面的分析,可以很明确的得到清除 REST cache的步骤,那么下面我们就用flex来实现这个功能。3.1 生成 token/获取 tokenprivate function getToken(adminUrl:String ,u
6、sername:String,password:String)var httpService:HTTPService = new HTTPService();/构造 generateToken方法 UrlhttpService.url = adminUrl+”/generateToken”;/使用 POST方法httpService.method=”POST”;var param:Object = new Object();/用户名param.username = username;/密码param.password = password;/IPparam.ip = “”;/refererpa
7、ram.referer=”“;/client使用 requestip,因此 ip和 referer不填param.client = “requestip”;/超时设为1个小时param.expiration = 60;/以 json方式返回param.f=”json”;httpService.addEventListener(ResultEvent.RESULT,OnResultGetToken);httpService.addEventListener(FaultEvent.FAULT,OnFaultGetToken);/发送请求httpService.send(param);3.2 清除
8、REST缓存private function Clear(adminUrl:String ,token:String)var httpService:HTTPService = new HTTPService();/构造清楚缓存 UrlhttpService.url = adminUrl+”/cache/clear?token=”+token+”httpService.addEventListener(ResultEvent.RESULT,OnResultClear);httpService.addEventListener(FaultEvent.FAULT,OnFaultClear);/发送请求httpService.send();