10.1 Arcgis Server 获取服务的目录、名称和类型

由于server中名称可能相同,所以用数组存放

public static Dictionary<string, string[]> ListServices_RESTAadmin(string restAdmin, string userName, string password, string folder)
        {
            string[] serverlist = new string[1];
            Dictionary<string, string[]> pServiceType = new Dictionary<string, string[]>();
            try
            {
                string token = GenerateAGSToken_RESTAdmin(restAdmin, userName, password);
                //使用WebRequest发送请求
                restAdmin = restAdmin.EndsWith("/") ? restAdmin.Substring(0, restAdmin.Length - 1) : restAdmin;
                string serviceUrl = restAdmin + "/" + folder;
                WebRequest request = WebRequest.Create(serviceUrl);
                string postcontent = "f=json&token=" + token;

                //json格式
                Byte[] content = Encoding.UTF8.GetBytes(postcontent);
                request.ContentLength = content.Length;
                request.ContentType = "application/x-www-form-urlencoded";
                request.Method = "POST";
                Stream requestStream = request.GetRequestStream();
                requestStream.Write(content, 0, content.Length);
                requestStream.Close();

                WebResponse response = request.GetResponse();
                Stream responseStrem = response.GetResponseStream();
                StreamReader reader = new StreamReader(responseStrem);
                string result = reader.ReadToEnd();

                int index = result.IndexOf("services");

                IJSONReader2 pJsonReader = new JSONReaderClass();

                IJSONObject pOb = pJsonReader.ParseJSONString(result) as IJSONObject;

                if (folder == "")
                {
                    //根目录
                    pServiceType.Add("/", serverlist);
                }
                else
                {
                    pServiceType.Add(folder, serverlist);
                }

                IJSONArray pFodArr;
                if (pOb.TryGetValueAsArray("folders", out pFodArr))
                {
                    for (int i = 0; i < pFodArr.Count; i++)
                    {
                        pServiceType.Add(pFodArr.get_Value(i).ToString(), serverlist);
                    }
                }
                if (pOb.MemberExists("services"))
                {
                    object pJs;
                    if (pOb.TryGetValue("services", out pJs))
                    {
                        if (pJs is IJSONArray)
                        {
                            IJSONArray pArray = pJs as IJSONArray;
                            serverlist = new string[pArray.Count * 2];
                            for (int i = 0; i < pArray.Count; i++)
                            {
                                if (pArray.get_Value(i) is IJSONObject)
                                {
                                    IJSONObject pType = pArray.get_Value(i) as IJSONObject;
                                    string serviceName;
                                    //服务的名称
                                    if (pType.TryGetValueAsString("name", out serviceName))
                                    {
                                        serverlist[i * 2] = serviceName;
                                    }
                                    string AGSType;
                                    //服务的类型
                                    if (pType.TryGetValueAsString("type", out AGSType))
                                    {
                                        serverlist[i * 2 + 1] = AGSType;
                                    }
                                }
                            }
                            if (folder == "")
                            {
                                pServiceType["/"] = serverlist;
                            }
                            else
                            {
                                pServiceType[folder] = serverlist;
                            }
                        }
                    }
                }
            }
            catch
            {
               
            }
            return pServiceType;
        }

posted @ 2013-07-30 16:39  ◆紅袖  阅读(709)  评论(0编辑  收藏  举报