Je vais avoir du mal à créer un équivalent WebRequest de la commande boucle suivante:WebRequest équivalent de `boucle -X SUPPRIMER ...`
curl -vX DELETE "http://admin:[email protected]:5984/booster"
La commande fonctionne très bien, donne le résultat suivant:
C:\Projects\Booster\Bin>curl -vX DELETE "http://admin:[email protected]: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
et supprime une base de données CouchDB comme prévu, mais quand j'utilise le code équivalent suivant:
try
{
var request = WebRequest.Create("http://admin:[email protected]:5984/booster");
request.Headers.Clear();
request.Method = "DELETE";
var response = request.GetResponse();
Console.WriteLine(response.GetResponseString());
}
catch (WebException e)
{
Console.WriteLine(e.Response.GetResponseString());
}
Pour faire la même chose que la commande curl, j'obtiens une exception indiquant
"Le serveur distant a renvoyé une erreur: (405) Méthode non autorisée."
Server répond avec '{ "erreur": "method_not_allowed", "raison": "Seul GET, HEAD a permis"}'
La question:
Quelle est la différence entre commande curl et la commande exécuté via WebRequest? Pourquoi dans le premier cas tout fonctionne et en second lieu tout échoue?
Je ne connais pas la réponse à votre question, mais vous pouvez utiliser Wireshark ou peut-être Fiddler comme outil de diagnostic pour regarde ce qui se passe sur le fil. – Amy
J'ai installé Wireshark Je ne comprends rien, pouvez-vous donner des liens vers des tuts de démarrage rapide? – Lu4
Avez-vous essayé de définir la propriété [Credentials] (http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.credentials.aspx) au lieu de spécifier 'admin: 123' dans l'URL? – dtb