Télécharger fichier à partir d'une page web et authentification
Bonjour,
Je cherche à télécharger un fichier à partir d'une page web qui requiert une identification.
Après recherches j'ai tenter d'utiliser la classe WebClient comme ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| Function Telechargment_fichier_extranet() As String
Dim ID As String = "XXXX", MDP As String = "XXXX"
Dim Source As String = "http://extranet-xxxx.com/app/Effectifs/report_manager.php?report_name=specExp01&isw=2400&ish=1263&sid=tM6HGmRvZPFaSK4jx3dr"
Dim Download As New System.Net.WebClient()
Download.Credentials = New System.Net.NetworkCredential(ID, MDP)
Dim CheminFichier As String = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) & "\" & My.Application.Info.ProductName & "\Import_BDD_" & DateAndTime.Now.Year & "-" & DateAndTime.Now.Month & "-" & DateAndTime.Now.Day & " - " & DateAndTime.Now.Hour & "_" & DateAndTime.Now.Minute & ".txt"
Test_Dossier(CheminFichier)
Try
Download.DownloadFile(Source, CheminFichier)
Download.Dispose()
Return CheminFichier
Catch ex As Exception
Return ex.Message
End Try
End Function
Sub Test_Dossier(ByVal CheminComplet As String)
Dim Dossier As New DirectoryInfo(Path.GetDirectoryName(CheminComplet))
If Dossier.Exists = False Then
Dossier.Create()
End If
End Sub |
La méthode DownloadFile me renvoie le code de la page au format texte.
Dois-je utiliser une autre classe ? La classe WebRequest ? J'avoue que je nage ! :aie:
Merci par avance.
On avance sur l'authentification...
Bonjour,
Tout d'abord voici ce que j'obtiens lorsque j'inspecte le formulaire de la page web :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <form name="formu" action="accueil.php" method="POST">
<input id="bool_force_session" name="bool_force_session" value="" type="hidden">
<input id="int_screen_width" name="int_screen_width" value="2399" type="hidden">
<input id="int_screen_height" name="int_screen_height" value="1263" type="hidden">
<input id="str_action_login" name="str_action_login" value="login" type="hidden">
<div id="principal" style="width: 400px; position: relative; top: 543px; left: 999.5px;">
<div id="div_login" class="ui-widget ui-widget-content ui-corner-all caliBloc-container" style="float: none;">
<div role="titre" class="ui-widget-header ui-corner-top caliBloc-entete" style="text-align: left;"><img src="profils/default/img/logomaison.png" class="logo">XXXX<div role="toolbar" class="ui-widget-header caliBloc-toolbar" style="display: none;"></div></div><div role="confirm" style="display: none; cursor: pointer;" class="ui-widget caliBloc-contenu ui-state-highlight" title="Double-cliquez pour masquer ces messages"></div>
<div role="contenu" class="ui-widget caliBloc-contenu">
<div role="alerte" class="ui-widget caliBloc-contenu ui-state-error" title="Double-cliquez pour masquer ces messages" style="cursor: pointer; display: none;"></div>
<p><label for="login">Identifiant</label><input id="str_login" name="str_login" value="" class="ui-state-default" type="text"></p>
<p><label for="password">Mot de passe</label> <input id="str_password" name="str_password" value="" class="ui-state-default" type="password"></p>
<p class="actions"><button type="submit" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button" aria-disabled="false"><span class="ui-button-text">Se connecter</span></button></p>
</div>
<div class="copyright">XXXX</div>
</div>
<span style="display:block;font-size:12"><a href="../pwd/renvoi.php">Mot de passe oublié / renvoi de mot de passe</a></span>
</div>
</form> |
Ensuite grâce à votre aide et à cette page et celle ci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| Dim ID As String = "str_login=XXXX", MDP As String = "str_password=XXXX"
Dim Source As String = "http://extranet-xxxxx.com/app/Effectifs/adherent.php?isw=2400&ish=1263&sid=tM6HGmRvZPFaSK4jx3dr"
Dim RequeteWeb As Net.WebRequest = Net.WebRequest.Create(Source)
Dim Donnees As String = ID & MDP
Dim ByteArray As Byte() = Text.Encoding.UTF8.GetBytes(Donnees)
RequeteWeb.Method = "POST"
RequeteWeb.ContentLength = ByteArray.Length
RequeteWeb.ContentType = "application/x-www-form-urlencoded"
Dim DataStream As Stream = RequeteWeb.GetRequestStream
DataStream.Write(ByteArray, 0, ByteArray.Length)
DataStream.Close()
Dim ResponseWeb As Net.WebResponse = RequeteWeb.GetResponse
MsgBox(CType(ResponseWeb, Net.HttpWebResponse).StatusDescription)
DataStream = ResponseWeb.GetResponseStream
Dim Reader As New StreamReader(DataStream)
Dim ResponseString As String = Reader.ReadToEnd
Reader.Close()
DataStream.Close()
ResponseWeb.Close() |
La propriété StatusDescription me renvoie la chaine "OK"
La chaine ResponseString quant à elle contient un code html correspondant à celui de la page d'accueil du site concerné.
Je pense donc que l'authentification est donc réussi.
Comment ensuite télécharger mon fichier ?
Merci.