Problème avec les classes HttpWebRequest et HttpWebResponse sous C#
Bonjour.
Je débute sur le webservices et j'avoue que j'y perds un peu mon latin.
Bref, j'ai un fichier XML présent sur un serveur sur lequel je dois m'authentifier.
Voici le contenu de mon fichier XML
Code:
1 2 3 4 5 6 7
| <?xml version="1.0" encoding="utf-8" ?>
<GetSIDResp xmlns:xsd="http://www.mysociety.org/2001/XMLSchema" xmlns:xsi="http://www.mysociety.org/2001/XMLSchema-instance" xmlns="http://www.mysociety.org/EmtGateway/webservice">
<errorText />
<errorCode>0</errorCode>
<sid>IThdpC1uuYwkiKGeMiuFMSZ56qUvf8BXGt3Sej284iE8jxogh5lkWwauawWvT78-</sid>
<httpCode>200</httpCode>
</GetSIDResp> |
pour accéder à la ressource, je dois taper ce lien dans IE :
http://mysociety.org/EmtGateway/Sess...sword=totopass
j'exécute le code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| public bool ConnectServer(String sServer, String sConnexion, String sLogin, String sPwd)
{
m_bIsServerNG = false;
bool bSucceed = false;
DateTime dt1 = DateTime.Now;
try
{
m_sServer = sServer;
// Prepare session id provider URL
String sUrlSessionIdProvider = sConnexion;
String SUrlSuffix = String.Format("?username={0}&password={1}", sLogin, sPwd);
sUrlSessionIdProvider += SUrlSuffix;
// Build xml request to get session id
HttpWebRequest httpConnectionRequest = (HttpWebRequest)WebRequest.Create(sUrlSessionIdProvider);
NetworkCredential myCredential = new NetworkCredential(sLogin, sPwd);
CredentialCache credentialLog = new CredentialCache();
credentialLog.Add(new Uri(sUrlSessionIdProvider), "Basic", myCredential);
httpConnectionRequest.Credentials = credentialLog;
httpConnectionRequest.Method = "GET";
httpConnectionRequest.ContentType = "text/xml; charset=utf-8";
httpConnectionRequest.UserAgent = "MyAgentSingleSignOn";
// Get request response
HttpWebResponse httpConnectionResponse = (HttpWebResponse)httpConnectionRequest.GetResponse();
Stream streamResponse = httpConnectionResponse.GetResponseStream();
StreamReader streamReader = new StreamReader(streamResponse);
// Load response in an XML Document
XmlDocument doc = new XmlDocument();
doc.LoadXml(streamReader.ReadToEnd());
// Select session id
XmlNode root = doc.DocumentElement;
XmlNode nodeSid;
nodeSid = root.SelectSingleNode("*[local-name()='sid']");
if (nodeSid != null)
{
m_sessionId = nodeSid.InnerText;
bSucceed = true;
}
streamResponse.Close();
}
catch (WebException e)
{
System.Windows.Forms.MessageBox.Show(e.Message);
}
catch (System.Exception e)
{
System.Windows.Forms.MessageBox.Show(e.Message);
}
TimeSpan ts = DateTime.Now - dt1;
m_errorHandler.setErrorLog("Connect to server", bSucceed ? "Succeeded" : "Failed", ts.Milliseconds.ToString());
return bSucceed;
} |
Le problème que j'ai est que à chaque fois, l'exception WebException est lancée ; (en fait, je tombe sur une erreur de type 401 :
("The remote server returned an error: (401) Unauthorized.")
D'autre part, voici ce que je trouve dans
Citation:
Headers {XXX-Authenticate: CGIPassword
Connection: close
Content-Type: text/html; charset=ISO-8859-1
Date: Mon, 13 Aug 2007 17:14:34 GMT
Set-Cookie: Transact=H37862c891bbc17f4a1588c67319b0f50:session_id=a9f37dfc49c011dc890ab3bdee1a94e9&first_time=1&kid=310001.100014&ss=env; Path=/
Server: Netscape-Enterprise/3.6 SP3
WWW-Authenticate: Basic realm="MySociety Account Administration"
}
Quelqu'un pourrait-il m'aider, car là, je suis bloqué en météphase 2 :(