我在尝试创建一个与以下curl命令等效的WebRequest时遇到了问题:
curl -vX DELETE "http://admin:123@localhost:5984/booster"
该命令运行正常,输出如下:
C:\Projects\Booster\Bin>curl -vX DELETE "http://admin:123@localhost:5984/booster"
* About to connect() to localhost port 5984 (#0)
* Trying 127.0.0.1... connected
* Server auth using Basic with user 'admin'
> DELETE /booster HTTP/1.1
> Authorization: Basic YWRtaW46MTIz
> User-Agent: curl/7.22.0 (i386-pc-win32) libcurl/7.22.0 OpenSSL/0.9.8r zlib/1.2.5
> Host: localhost:5984
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: CouchDB/1.0.2 (Erlang OTP/R14B)
< Date: Fri, 25 Nov 2011 01:03:45 GMT
< Content-Type: text/plain;charset=utf-8
< Content-Length: 12
< Cache-Control: must-revalidate
<
{"ok":true}
* Connection #0 to host localhost left intact
* Closing connection #0
当我使用以下等效代码时,它按预期删除了CouchDB数据库:
try
{
var request = WebRequest.Create("http://admin:123@localhost:5984/booster");
request.Headers.Clear();
request.Method = "DELETE";
var response = request.GetResponse();
Console.WriteLine(response.GetResponseString());
}
catch (WebException e)
{
Console.WriteLine(e.Response.GetResponseString());
}
要做与curl命令相同的事情,我得到了一个异常,告诉我:"远程服务器返回错误:(405)方法不允许。" 服务器响应为'{"error":"method_not_allowed","reason":"Only GET,HEAD allowed"}'。
问题是:curl命令和通过WebRequest执行的命令之间有什么区别?为什么在第一种情况下一切都正常工作,在第二种情况下一切都失败了?
admin:123
吗? - dtb