下面给出rest方式,因为内容超出限制,请看附件:
ArcGIS 10.1 for Server可以通过http请求的方式访问,server接到请求后,然后响应,响应的结果是json格式的,对json格式我们可以自己去解析,但是这个很麻烦,在10.1中增加了很多对json格式处理的接口IJSONReader2,IJSONWriter等很多,我在这里偷懒直接使用了AO中自带的接口,如果不用AO中的这些接口,自己借助一些json的解析工具如:JSON.NET也是可以的。
1.1.1 获取token
public string GenerateAGSToken_RESTAdmin(string restAdmin, string username, string password)
{
try
{
if (restAdmin.EndsWith("\\"))
{
restAdmin = restAdmin.Substring(0, restAdmin.Length - 1);
}
if (restAdmin.EndsWith("services"))
{
restAdmin = restAdmin.Substring(0, restAdmin.Length - 9);
}
string loginUrl = restAdmin + "/generateToken";
WebRequest request = WebRequest.Create(loginUrl);
request.Method = "POST";
string credential = "username=" + username + "&password=" + password + "&client=requestip&expiration=&f=json";
byte[] content = Encoding.UTF8.GetBytes(credential);
request.ContentLength = content.Length;
request.ContentType = "application/x-www-form-urlencoded";
Stream requestStream = request.GetRequestStream();
requestStream.Write(content, 0, content.Length);
requestStream.Close();
WebResponse response = request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
string result = reader.ReadToEnd();
IJSONReader2 pJsonReader = new JSONReaderClass();
IJSONObject pOb = pJsonReader.ParseJSONString(result) as IJSONObject;
string token;
if (pOb.TryGetValueAsString("token", out token))
{
}
return token;
}
catch { return ""; }
}
public bool DeleteService_RESTAdmin(string restAdmin, string username, string password, string serviceName,string pType,string pFolder )
{
try
{
//string token = GenerateAGSToken_RESTAdmin(restAdmin, username, password);
restAdmin = restAdmin.EndsWith("/") ? restAdmin.Substring(0, restAdmin.Length - 1) : restAdmin;
string serviceUrl = restAdmin + "/services" +pFolder+"/"+ serviceName + "." + pType + "/delete";
WebRequest request = WebRequest.Create(serviceUrl);
string postcontent = "f=pjson&token=" + token;
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 responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
string result = reader.ReadToEnd();
return result.Contains("success");
}
catch { return false; }
}
1.1.2 停止服务
public bool StopService_RESTAdmin(string restAdmin, string username, string password, string serviceName, string pType, string pFolder)
{
try
{
// string token = GenerateAGSToken_RESTAdmin(restAdmin, username, password);
restAdmin = restAdmin.EndsWith("/") ? restAdmin.Substring(0, restAdmin.Length - 1) : restAdmin;
if (pFolder.Length > 0)
{
pFolder = pFolder.StartsWith("/") ? pFolder : "/" + pFolder;
}
string serviceUrl = restAdmin + "/services" +pFolder+"/"+ serviceName + "." + pType + "/stop";
WebRequest request = WebRequest.Create(serviceUrl);
string postcontent = "f=pjson&token=" + token;
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 responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
string result = reader.ReadToEnd();
return result.Contains("success");
}
catch { return false; }
}