WebClient drops a wrong string

Posted on

Question :

I’m trying to create a virtual intelligence system, and hosted the language files in my FTP. These files are from a language I made myself, called SVDB, and hosted on FTP, and when I download in the application the text file it comes with HTML. This is the original file (hosted on FTP):

default {
   wrong: "Desculpe, não entendi";
   language-name: "Português Brasileiro";
   language-code: "PT-BR";
   version: "1.0";
replace-strings {
   R0001: "vc|você";
   R0002: "td|tudo";
K00001 {
   input: "olá|ola|oi|eae";
   output: "Olá!";
   action-id: "";
K00002 {
   input: "tudo bem?|você está bem?";
   output: "Estou bem, obrigado por perguntar.";
   action-id: "";

And this is what WebClient.DownloadString() low:




And this is the code I’m using to download the file:

Public Function GetLanguageServer(ByVal LangCode As String) As MainServer
    Dim v As New WebClient
    Dim s As String = v.DownloadString("http://server-advenker32.66ghz.com/Panthon/Server/Langs/" & LangCode.ToLower & "/input.txt")
    Return TextParser.ResolveServerFromString(s) ' o Parser tenta entender o que foi baixado aqui
End Function

So, how do I down the file from a formatting like the original shown up there?


Note: The permissions of the hosted file are code 744 (Public Read Permissions)


Note: The file is hosted on my uHostAll company FTP.


Note: When trying to access the file through the browser, it appears correctly and without any problem.


Answer :

I have achieved another method, I created a WebBrowser and simply navigated to the file link, this is the method now:

Public Sub GetLanguageServer(ByVal LangCode As String)
    Dim address As String = "http://server-advenker32.66ghz.com/Panthon/Server/Langs/pt-br/input.txt"
    Dim BrowserClient As New WebBrowser
    AddHandler BrowserClient.DocumentCompleted, Sub() SDK = TextParser.ResolveServerFromString(BrowserClient.Document.Body.InnerText)
End Sub

And it worked, the Document.Body.InnerText property returned the file.



Doing with WebBrowser will consume more resources than a webclient, as it is an IE wrapper and will run the entire rendering and rendering stack of internet explorer.
To do what you asked for, just do it.

        //Exemplo gravando em um arquivo físico
        using (var client = new WebClient())
            client.DownloadFile("http://namitec.com.br/teste.txt", @"c:tempteste.txt");

        //Exemplo lendo direto para memória
        using (var client = new WebClient())
            using (var stream = new MemoryStream(client.DownloadData("http://namitec.com.br/teste.txt")))
                var text = Encoding.UTF8.GetString(stream.ToArray());

I have taken the liberty of putting the example at this address so that you can test.


Leave a Reply

Your email address will not be published. Required fields are marked *