C# Geoserver返回405:不允许使用方法
我正在尝试在C#中创建Geoserver REST客户端。示例代码如下:C# Geoserver返回405:不允许使用方法,c#,rest,geoserver,qgis,C#,Rest,Geoserver,Qgis,我正在尝试在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 PerformReq
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;
}
}
private静态字符串GEOSERVER\u HOST=”http://10.0.0.248:8080/geoserver/rest/";
专用静态字符串GEOSERVER_USER=“admin”;
专用静态字符串GEOSERVER_PASSWD=“GEOSERVER”;
公共WebResponse PerformRequest(字符串端点、字符串请求体、字符串方法=“PUT”)
{
字符串gUrl=GEOSERVER_HOST+endPoint;
WebRequest=WebRequest.Create(gUrl);
request.ContentType=“text/xml”;
request.Method=Method;
request.Credentials=newnetworkcredential(GEOSERVER\u USER,GEOSERVER\u PASSWD);
如果(方法!=“获取”)
{
byte[]buffer=Encoding.GetEncoding(“UTF-8”).GetBytes(请求体);
Stream requestStream=request.GetRequestStream();
Write(buffer,0,buffer.Length);
requestStream.Close();
}
WebResponse=request.GetResponse();
返回响应;
}
public bool AddNewWorkspace(字符串workspaceName)
{
尝试
{
PerformRequest(“工作空间”,“工作空间名称+”);
返回true;
}
捕获(例外情况除外)
{
返回false;
}
}
执行request.GetResponse()时,返回异常“405:不允许使用方法”
我正在使用一个相当新的Geoserver(我相信它是2.8.something)。选择默认安装选项。REST功能已打开(我可以使用浏览器浏览/REST/“目录”)
Geoserver正在32位Windows 8计算机上运行。并且Geoserver已启动
我还可以毫无问题地执行GET请求,因此身份验证似乎可以正常工作
任何帮助都将不胜感激。
HTTP/1.1 405不允许的方法
通常指请求方法/动词
您的参数方法
的默认值为“PUT”
,在调用PerformRequest
时,您不会覆盖该值
似乎
/geoserver/rest/workspace
不支持PUT
操作。HTTP/1.1405不允许的方法
通常指请求方法/动词
您的参数方法
的默认值为“PUT”
,在调用PerformRequest
时,您不会覆盖该值
似乎
/geoserver/rest/workspaces
不支持PUT
操作。您确定/geoserver/rest/workspaces
支持PUT
操作吗?我们现在是朋友了。更改为POST-worked。我使用示例代码上载了一个使用PUT的形状文件。将您的注释作为一部分您确定/geoserver/rest/workspaces
支持放置操作吗?我们现在是朋友。更改为POST worked。我正在使用示例代码上载一个使用放置的形状文件。将您的注释作为答案的一部分,我将接受。谢谢。既然您上载了文件,我假设th PUT,你也会用PUT创建工作区。我错了。谢谢。我假设既然你用PUT上传文件,你也会用PUT创建工作区。我错了。