11
votes

Curl avec authentification de l'utilisateur en C #

Je veux faire la demande de courbure suivante en C #:

string url = "http://localhost:8080/geoserver/rest/workspaces";
WebRequest request = WebRequest.Create(url);

request.ContentType = "Content-type: text/xml";
request.Method = "POST";
string authInfo = "admin:geoserver";
request.Headers["Authorization"] = "Basic " + authInfo;

byte[] buffer = Encoding.GetEncoding("UTF-8").GetBytes("<workspace><name>my_workspace</name></workspace>");
Stream reqstr = request.GetRequestStream();
reqstr.Write(buffer, 0, buffer.Length);
reqstr.Close();

WebResponse response = request.GetResponse();
...


0 commentaires

4 Réponses :


12
votes

L'authentification de base HTTP nécessite tout après "Basic" pour être BASE64-codé, essayez donc xxx


2 commentaires

J'ai essayé de convertir authinfo en une base64string, mais je reçois alors l'erreur "(400) de mauvaise demande".


@taudorf: hmm ... Téléchargez Fiddler et voyez quelle est la différence entre deux demandes postales.



10
votes

La solution à ma question modifiait la propriété contenttype em>. Si je change le ContentType

request.ContentType = "text/xml";


0 commentaires

2
votes

Utilisation:

request.ContentType = "application/xml";

request.Credentials = new NetworkCredential(GEOSERVER_USER, GEOSERVER_PASSWD);


0 commentaires

0
votes

ou, si vous souhaitez utiliser httpClient: xxx


0 commentaires