У меня проблемы с получением метода HTTP PUT, работающего с базой данных Couchdb create. Ничего страшного в коде, вы все уже видели, поэтому не будете публиковать, потому что это слишком скучно. Сообщение об ошибке при использовании метода put Соединение закрыто. Есть ли что-то, о чем я должен знать ... что-то действительно дурацкое. Я получаю 404, когда я использую метод POST, который является правильным в контексте создания новой БД с Couchdb. Любая помощь высоко ценится. Может ли HTTPWebRequest выполнить метод PUT? Если нет, то я не понимаю, почему нет.
более конкретно: ошибка: базовое соединение было закрыто: соединение было неожиданно закрыто.
Я проверил Couchdb с помощью CURL ... и он отлично работает.
В этот момент возникает ошибка ... после установки метода на "PUT"
Stream requestStream = httpWebRequest.GetRequestStream();
фрагмент кода:
private string DataViaHTTP(string url, Dictionary<string, string> parameters, string content, string contentType, int timeout, bool contentIsParam, string method)
{
byte[] requestData;
try
{
HttpWebRequest httpWebRequest;
if (contentIsParam == false)
{
requestData = System.Text.Encoding.ASCII.GetBytes(content);
httpWebRequest = (HttpWebRequest)WebRequest.Create(BuildParamString(url, parameters));
}
else
{
requestData = System.Text.Encoding.ASCII.GetBytes(BuildParamString(null, parameters));
httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
}
httpWebRequest.Method = method;
httpWebRequest.ContentType = contentType;
if (timeout > 0)
{
httpWebRequest.Timeout = timeout;
}
httpWebRequest.ContentLength = requestData.Length;
Stream requestStream = httpWebRequest.GetRequestStream();
requestStream.Write(requestData, 0, requestData.Length);
requestStream.Close();
// Read and return the response stream
HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
Stream outStream = httpWebResponse.GetResponseStream();
var stringStream = String.Empty;
using (StreamReader streamReader = new StreamReader(outStream))
{
stringStream = streamReader.ReadToEnd();
}
return stringStream;
}
catch (WebException e)
{
throw e;
}
catch (Exception e)
{
throw e;
}
}
это тоже не сработало: (
public string PutCommand(string url)
{
try
{
using (WebClient webclient = new WebClient())
{
webclient.Headers["User-Agent"] = "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.89 Safari/532.5";
webclient.Encoding = System.Text.Encoding.ASCII;
var x = webclient.UploadData(url, "PUT", new byte[] {});
return System.Text.Encoding.ASCII.GetString(x);
}
}
catch (Exception e)
{
throw e;
}
}