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 aspx : Sélectionner tout - Visualiser dans une fenêtre à part
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 C# : Sélectionner tout - Visualiser dans une fenêtre à part
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
Quelqu'un pourrait-il m'aider, car là, je suis bloqué en météphase 2Headers {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"
}
Partager