Devo scaricare un file di testo da Internet utilizzando C#. La dimensione del file può essere abbastanza grande e le informazioni di cui ho bisogno sono sempre entro i primi 1000 byte. È possibile?Download dei primi 1000 byte
risposta
Rubato da here.
string GetWebPageContent(string url)
{
string result = string.Empty;
HttpWebRequest request;
const int bytesToGet = 1000;
request = WebRequest.Create(url) as HttpWebRequest;
//get first 1000 bytes
request.AddRange(0, bytesToGet - 1);
// the following code is alternative, you may implement the function after your needs
using (WebResponse response = request.GetResponse())
{
using (Stream stream = response.GetResponseStream())
{
byte[] buffer = new byte[1024];
int read = stream.Read(buffer, 0, 1000);
Array.Resize(ref buffer, read);
return Encoding.ASCII.GetString(buffer);
}
}
}
(A cura come richiesto nei commenti ...;))
Suggerirei di sostituire 'ReadToEnd' con una lettura di (al massimo) 1000 caratteri nel caso in cui il server abbia ignorato la richiesta di intervallo. – Richard
@Richard: non sarebbe necessario poiché è stata aggiunta un'intestazione di intervallo alla richiesta. La risposta sarà al massimo 1000 caratteri. –
@Jeff: come il mio commento diceva "nel caso in cui il server abbia ignorato la richiesta di intervallo" poiché l'intestazione 'Range' è * opzionale * per il server e può essere ignorata. – Richard
ho fatto questo come una risposta alla tua domanda più recente. Puoi anche inserire l'intestazione dell'intervallo se vuoi, ma l'ho escluso.
string GetWebPageContent(string url)
{
//string result = string.Empty;
HttpWebRequest request;
const int bytesToGet = 1000;
request = WebRequest.Create(url) as HttpWebRequest;
var buffer = new char[bytesToGet];
using (WebResponse response = request.GetResponse())
{
using (StreamReader sr = new StreamReader(response.GetResponseStream()))
{
sr.Read(buffer, 0, bytesToGet);
}
}
return new string(buffer);
}
Tecnicamente questo può richiedere fino a 2000 byte se lo StreamReader "pensa" che ritorni unicode. La mia modifica (vedi sopra), invece, impone la codifica, che potrebbe anche essere sbagliata. Rama deve chiarire il requisito che indovino. – Lucero
- 1. Rimozione dei primi 16 byte da un array di byte
- 2. PySerial: danneggiamento dei dati nei primi 256 byte
- 3. Rimuovere i primi 16 byte?
- 4. Leggere i primi byte di un file
- 5. Meta tag non nei primi 1024 byte
- 6. Comprimi circa 1000 byte di testo per una QueryString
- 7. Leggere solo i primi N byte dal socket in node.js
- 8. Perché Magento mantiene solo i primi 1000 prodotti in una categoria, dopo aver salvato la categoria?
- 9. node.js/leggi 100 primi byte di un file
- 10. Come mostrare i primi x byte usando hexdump?
- 11. Gestione dei download in Java
- 12. Codeigniter Forza download dei file
- 13. Somma dei maggiori divisori dispari dei primi n numeri
- 14. PHP Force Download che causa file 0 byte
- 15. Download dei download da lavorare tra angularjs e express.js
- 16. android cipher non decrittografa i primi 16 byte/caratteri di dati crittografati
- 17. C# - Download da Google Drive in blocchi di byte
- 18. Android, invio rapido dei messaggi a 1000 dispositivi
- 19. Rimozione dei caratteri NULL dai byte
- 20. perché 24 * 60 * 60 * 1000 * 1000 diviso per 24 * 60 * 60 * 1000 non uguale a 1000 in Java?
- 21. Confronta i valori dei byte?
- 22. Download manager - limite velocità download
- 23. Limitazione dei download utente in Azure
- 24. Test dei collegamenti di download con Nightwatch.js
- 25. Webdriver | IE9 | Installazione auto-download dei file
- 26. Backoff esponenziale: time.sleep con random.randint (0, 1000)/1000
- 27. mySQL Restituzione dei primi 5 di ogni categoria
- 28. L'API di Twitter ottiene più dei primi 100 retweet
- 29. Targeting dei primi 2 figli o degli ultimi 2 figli
- 30. SQL Server 2000 Delete Top (1000)
È _che possibile? Download di file di testo? Scopri come fare domande - http://tinyurl.com/so-hints – Oded
+ 1 Questa dovrebbe essere la pagina delle FAQ ufficiali. – Marko
@Oded: cosa pensi che manchi della domanda? –