我正在尝试使用C#创建Geoserver REST客户端。示例代码如下:
private static string GEOSERVER_HOST = "http://10.0.0.248:8080/geoserver/rest/";
private static string GEOSERVER_USER = "admin";
private static string GEOSERVER_PASSWD = "geoserver";
public WebResponse PerformRequest(string endPoint, string requestBody, string method = "PUT")
{
string gUrl = GEOSERVER_HOST + endPoint;
WebRequest request = WebRequest.Create(gUrl);
request.ContentType = "text/xml";
request.Method = method;
request.Credentials = new NetworkCredential(GEOSERVER_USER, GEOSERVER_PASSWD);
if (method != "GET")
{
byte[] buffer = Encoding.GetEncoding("UTF-8").GetBytes(requestBody);
Stream requestStream = request.GetRequestStream();
requestStream.Write(buffer, 0, buffer.Length);
requestStream.Close();
}
WebResponse response = request.GetResponse();
return response;
}
public bool AddNewWorkspace(string workspaceName)
{
try
{
PerformRequest("workspaces", "<workspace><name>"+ workspaceName+"</name></workspace>");
return true;
}
catch (Exception ex)
{
return false;
}
}
执行request.GetResponse()时,会返回异常&#34; 405:Method Not Allowed&#34;。
我正在使用一个相当新的Geoserver(我相信它的2.8.something)。选择了默认安装选项。 REST功能已打开(我可以浏览/ rest /&#34;目录&#34;使用浏览器。
Geoserver在32位Windows 8计算机上运行。 Geoserver已经开始了。
我也可以毫无问题地执行GET请求,因此身份验证似乎有效。
任何帮助都将不胜感激。
答案 0 :(得分:2)
HTTP/1.1 405 Method Not Allowed
通常是指请求方法/动词。
您的参数method
的默认值为"PUT"
,在调用PerformRequest
时您不会覆盖。
/geoserver/rest/workspaces
似乎不支持PUT
操作。