ESRI Admin API

本文介绍了如何利用ESRI的Admin API来管理ArcGIS服务,包括获取Token和停止服务的操作。通过发送Http请求到特定URL,结合用户凭据获取Token,然后使用Token停止服务。示例代码展示了在VS2010+Silverlight 5环境下如何实现这一过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      ArcGIS从10.1开始, 开放了基于Rest的Admin API。通过这个API,可以重构ArcGIS Server Manager。

      很简单,一句话,用Http请求去访问指定的Url。Url为管理员目录(http://<服务器名称>:6080/arcgis/admin)+操作地址+Token,如停止服务的URL为:

      http://localhost:6080/arcgis/admin/services/SampleWorldCities.MapServer/stop?f=json&token=

具体代码如下:

1)获取Token

private void GenerateAGSToken(string username, string password, string adminurl)
        {
            try
            {
                string urlGenerateToken = string.Format("{0}/generateToken", adminurl);
                string credential = string.Format("username={0}&password={1}&client=requestip&f=json", username, password);

                //以POST方式获得Token
                GetResult(urlGenerateToken, credential);

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

   private void GetResult(string url, string postContent)
        {
            HttpWebRequest request = null;
            try
            {
                request = (HttpWebRequest)WebRequest.Create(url);
                this.content =postContent;
                request.ContentLength = Encoding.UTF8.GetBytes(postContent).Length;
                request.ContentType = "application/x-www-form-urlencoded";
                request.Accept = "text/plain";
                request.Method = "POST";
                IAsyncResult asyresult = request.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), request);
               
   }
            catch
            {
                throw;
            }
        }

        private void GetRequestStreamCallback(IAsyncResult asynchronousResult)
        {
            HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;

            // End the operation
            Stream postStream = request.EndGetRequestStream(asynchronousResult);

            // Write to the request stream.
            using (StreamWriter writer = new StreamWriter(postStream))
            {
                writer.Write(this.content);
                //writer.Flush();
                writer.Close();
            }
            //postStream.Close();
            request.BeginGetResponse(new AsyncCallback(GetResponseCallback), request);

        }
     
        private  void GetResponseCallback(IAsyncResult asynchronousResult)
        {
            HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;

            // End the operation
            HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
            Stream streamResponse = response.GetResponseStream();
            StreamReader streamRead = new StreamReader(streamResponse);
            string responseString = streamRead.ReadToEnd();


            JObject jObj = JObject.Parse(responseString);
            this.token =(string ) jObj["token"];
           
            // Close the stream object
            streamResponse.Close();
            streamRead.Close();

            // Release the HttpWebResponse
            response.Close();
           
        }

2)停止服务

  public void StopService(string serviceName, ServiceType serviceType)
        {
            try
            {
                string serviceUrl = serviceName + "." + Enum.GetName(typeof(ServiceType), serviceType) + "/stop";
                this.GetResult(serviceUrl, "f=json&token=" + token);
                
            }
            catch
            {
                //return false;
            }
        }


其中JObject jObj = JObject.Parse(responseString);
            this.token =(string ) jObj["token"];

使用的是JSON.NET 我的开发环境是VS2010+Silverlight 5,所以需要使用的版本是V4.5。如果是非Silverlight环境,直接用NuGet下载最新版就可。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值