web-dev-qa-db-fra.com

Comment utiliser restsharp pour télécharger un fichier

J'ai une URL (URL pour le flux en direct du client) qui, lorsque je frappe dans le navigateur, renvoie la réponse xml. J'ai enregistré cela dans un fichier texte, sa taille est de 8 Mo.

maintenant mon problème est que je dois enregistrer cette réponse dans un fichier xml sur le lecteur du serveur. à partir de là, je vais insérer cela dans la base de données. et la demande doit être effectuée à l'aide de code à l'aide de la bibliothèque http-client ou rest-sharp de c # .net 4.5

Je ne sais pas quoi faire pour le cas ci-dessus. n'importe quel corps peut-il me suggérer quelque chose

24
Learner

Avec RestSharp, c'est juste là dans le readme :

var client = new RestClient("http://example.com");
client.DownloadData(request).SaveAs(path);

Avec HttpClient, c'est un peu plus compliqué. Jetez un oeil à ce billet de blog .

Une autre option est Flurl.Http (avertissement: je suis l'auteur). Il utilise HttpClient sous le capot et fournit une interface fluide et de nombreuses méthodes d'aide pratiques, notamment:

await "http://example.com".DownloadFileAsync(folderPath, "foo.xml");

Obtenez-le sur NuGet .

31
Todd Menier

Il semble que SaveAs ait été abandonné. Vous pouvez essayer ceci

var client = new RestClient("http://example.com")    
byte[] response = client.DownloadData(request);
File.WriteAllBytes(SAVE_PATH, response);
8
Edmund P Charumbira

Si vous souhaitez une version asynchrone

var request = new RestRequest("/resource/5", Method.GET);
var client = new RestClient("http://example.com")    
var response = await client.ExecuteTaskAsync(request);
if (response.StatusCode != HttpStatusCode.OK)
            throw new Exception($"Unable to download file");
response.RawBytes.SaveAs(path);
2
Vitaly