我已经设法通过REST API使用有用的在线cURL示例获取我的shapefile存档以发布到Geoserver。虽然我不得不将它们翻译成C#和HttpWebRequest类。现在,一切正常,因为我可以上传文件,然后在预览格式下拉列表中的WFS选项下以任何格式请求它:
但是,我无法在OpenLayers中预览它或请求任何WMS格式(栅格等)。请注意请求URL中的null,我认为这是问题,但它可能是更大问题的症状。
现在,我的上传代码运行正常,但在这里,以防你想知道。或许我需要再打一次电话。
旁注:是的,我知道我基本上复制了身份验证,但WebRequest发送了一个未经身份验证的第一个请求,这是解决这个问题的唯一方法。:< / p>
public bool UploadShapeFile(string workspace, string newStoreName, byte[] fileContents)
{
byte[] localShapeFile = fileContents;
String sUrl = GEOSERVER_HOST + "rest/workspaces/" + workspace + "/datastores/" + newStoreName + "/file.shp";
WebRequest request = WebRequest.Create(sUrl);
request.ContentType = "application/zip";
request.Method = "PUT";
request.Credentials = new NetworkCredential(GEOSERVER_USER, GEOSERVER_PASSWD);
request.Headers.Add("Authorization", "Basic " +
Convert.ToBase64String(
Encoding.ASCII.GetBytes(GEOSERVER_USER + ":" + GEOSERVER_PASSWD)));
// byte[] buffer = Encoding.GetEncoding("UTF-8").GetBytes(@fileUri);
Stream requestStream = request.GetRequestStream();
requestStream.Write(localShapeFile, 0, localShapeFile.Length);
requestStream.Close();
WebResponse response = request.GetResponse();
return false;
}