Demo实现功能:删除某个局域网内特定的GIS服务
官方文档:DeleteMapService—ArcMap | 文档
本机环境:ArcIGIS10.3,Python27
import json
import urllib
import urllib2
def gentoken(url, username, password, expiration=60):
query_dict = {'username': username,
'password': password,
'expiration': str(expiration),
'client': 'requestip'}
query_string = urllib.urlencode(query_dict)
return json.loads(urllib.urlopen(url + "?f=json", query_string).read())['token']
def deleteservice(server, servicename, username, password, token=None, port=6080):
if token is None:
token_url = "http://{}:{}/arcgis/admin/generateToken".format(server, port)
token = gentoken(token_url, username, password)
delete_service_url = "http://{}:{}/arcgis/admin/services/testServices/{}/delete?token={}".format(server, port, servicename, token)
urllib2.urlopen(delete_service_url, ' ').read() # The ' ' forces POST
# if you need a token, execute this line:
deleteservice("192.168.80.8", "test_20211019_135348.MapServer", "siteadmin", "siteadmin")
print("Delete succeeded!")
# if you already have a token, execute this line:
#deleteservice("", ".MapServer", None, None, token='')
主要设置参数有Arcgis Server服务器IP地址:192.168.80.8,要删除的服务的名称,站点登录的用户名和密码。
过程遇到的问题: token 立意不清,暂不知道代表什么以及在之后出现的话会有什么影响;
delete_service_url的服务地址是自定义的,服务地址涉及到ip,port,serviceName,folderName,一般ip和port是固定的,folderName和serviceName用传入的参数就好;
/arcgis/admin/servicedelete这个地址在浏览器打开后可以看到有服务删除的按钮,意外的发现。



