当前位置: 代码迷 >> CGI >> ArcGIS Server Java 9.3 REST API的中文查询有关问题的解决方案
  详细解决方案

ArcGIS Server Java 9.3 REST API的中文查询有关问题的解决方案

热度:844   发布时间:2012-06-30 17:20:12.0
ArcGIS Server Java 9.3 REST API的中文查询问题的解决方案

[已解决]?ArcGIS Server Java 9.3 REST API的中文查询问题的解决方案

【说明】这个问题已经在SP1中修复,所以更简单的办法就是打补丁

如不能查看图片,请看本文链接:http://wu-yongfeng.blogspot.com/2008/12/arcgis-server-java-93-rest-api.html

目前在ArcGIS Server 9.3 Java中使用中文进行REST查询时是有问题的,这是ArcGIS Server for Java集成的tomcat的问题,我的同事曾经给出一个解决方案:

1、ArcGIS Server Java9.3可以把services和rest单独导出成war包,部署到其他的web服务器上,从而可以避免内置tomcat的性能瓶颈。进入Manager-->services-->Configure ServicesHandler-->Export页面,把rest服务导出成rest.war,保存到本地;
2、把保存下来的rest.拷贝到任何一个其他版本的tomcat??的webapps目录下(ArcGIS Server内置的tomcat是5.5.9版本,我们测试用的是apache-tomcat-6.0.10)
3、启动tomcat6.0.10,在浏览器中输入http://localhost:8080/rest,进入service??directory页面。
4、选中服务的图层进行查询,输入中文进行查询,看是否可以得到正确的结果。

有人反映这个方案不能解决问题,可能和tomcat的版本有关,我研究了一下,给出两种解决方案:

方案1:
从客户端入手。
中文不能查询的根本原因在于编码,当我们在使用RESTAPI进行查询的时候,请求的URL一般是这样:“http://wuyfsles:8399/arcgis/rest/services/BeijingTraffic/MapServer/find?searchText=事故&contains=true&searchFields=&sr=&layers=0&returnGeometry=true”,其中的中文无法被服务器识别。因此,你可以在发送前对“事故”这个中文关键词进行URL编码,应该是“%CA%C2%B9%CA”,你在浏览器中输入“http://wuyfsles:8399/arcgis/rest/services/BeijingTraffic/MapServer/find?searchText=%CA%C2%B9%CA&contains=true&searchFields=&sr=&layers=0&returnGeometry=true”的时候,是不是可以看到结果了?

方案2:
从服务器端入手,还是着手解决编码问题。
既然tomcat有问题,我们就在tomcat身上开刀。以Linux为例,分别打开“/arcgis/java/manager/service/tomcat/managerappserver/conf/server.xml”和“/arcgis/java/manager/service/tomcat/managerserver/conf/server.xml”,找到“Connector”元素,如图添加属性URIEncoding="UTF-8"。保存退出,重启tomcat和ArcGIS Server。

1 楼 qq44056919 2011-03-25  
  使用方案2搞定了.其他的回头在尝试
  相关解决方案