none
Enviar arquivo XML com WebClient RRS feed

  • Pergunta

  • Preciso enviar arquivo XML do IsolatedStorage para servidor web, dentro da minha aplicação,  é possivel?

    O metodo abaixo gera o XML com base nas informaçoes preenchidas na tela:

    using (var isolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
                    {
                        if (isolatedStorage.FileExists("novo.xml"))
                        {
                            isolatedStorage.DeleteFile("novo.xml");
                        }
                        XmlWriterSettings xmlWriterSettings = new XmlWriterSettings();
                        xmlWriterSettings.Indent = true;
                        using (var stream = isolatedStorage.CreateFile("novo.xml"))
                        {
                            XmlSerializer serializer = new XmlSerializer(typeof(List<Agenda>));
                            using (XmlWriter xmlWriter = XmlWriter.Create(stream, xmlWriterSettings))
                            {
                                serializer.Serialize(xmlWriter, geraAgenda());
                            }
                        }
                    }
                    enviaDados();

    O download do xml eu faço com WebClient tranquilamente, o upload tb seria possivel?
    • Editado ghelfer terça-feira, 24 de abril de 2012 00:21
    quinta-feira, 19 de abril de 2012 12:46

Todas as Respostas

  • Hello, I need to send a XML file from IsolatedStorage to web server.

    The class below create the XML with data from the application form:

    using (var isolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
                    {
                        if (isolatedStorage.FileExists("novo.xml"))
                        {
                            isolatedStorage.DeleteFile("novo.xml");
                        }
                        XmlWriterSettings xmlWriterSettings = new XmlWriterSettings();
                        xmlWriterSettings.Indent = true;
                        using (var stream = isolatedStorage.CreateFile("novo.xml"))
                        {
                            XmlSerializer serializer = new XmlSerializer(typeof(List<Agenda>));
                            using (XmlWriter xmlWriter = XmlWriter.Create(stream, xmlWriterSettings))
                            {
                                serializer.Serialize(xmlWriter, geraAgenda());
                            }
                        }
                    }
                    UploadData();

    Is the file uploading possible using WebClient?
    terça-feira, 24 de abril de 2012 00:29
  • Hi... first question, where are you from?

    if you're a brazilian, you can write in portugues, no problem : )

    so, I am going to answre to your question trying to understand what you need to do, because there are two or more qays of doing what you need.

    first, you can use background file transfers. this is a logical way to upload and download files, especially if you need them to do that in the background.
    learn more about it reading the official msdn library

    http://msdn.microsoft.com/en-us/library/hh202955(v=VS.92).aspx

    But, if you need to upload  just like what you showed above, where we have an object, a collection, or something like that,maybe what you can do is attach a service to your method. that implies picking up your collection and then calling out a service that will receive this and do whatever you may want to do.

    this will only work when the app is running, on the foreground, so you may have to run this by adding this code to an event that is triggered by the user.

    fact is, you have some choices and both have "problems". read about the background file transfers and you will see that you have some limitations, outside the fact that you can this is the background.


    --------------------
    resumo em português para quem quiser, ele tem um objeto, uma coleção , a qual está serializando e quer enviar a um servidor.

    passei duas maneiras de conseguir isso, uma, subindo os dados para o servidor usando um serviço que é disparado por uma ação do usuário. ou seja, um botão de "save" ou algo do tipo que além de salvar localmente, já sobe os dados, mas a app tem que estar em foreground.

    outra, usando o background file transfer, e aí passei o link da biblioteca MSDN

    há diversas maneiras de alcançar esse mesmo resultado, mas acredito que, se for ficar salvando arquivos localmente, sem ter noção de conexão ativa ou não, talvez o bg file transfer possa ser uma boa


    Rodolpho Marques do Carmo Microsoft MVP - Windows Phone Development @rodocarmo http://www.conexaowindows.com http://www.rodolphomarques.com http://www.windowsphonebrasil.net

    terça-feira, 24 de abril de 2012 12:21
    Moderador
  • Eu fiz a mesma pergunta em portugues porém, como não obtive exito, decidi abranger mais...

    http://social.msdn.microsoft.com/Forums/pt-BR/winphone7pt/thread/2c7fe34a-fc5b-4698-bdb3-e477944bdeff

    Valeu pela dica, vou procurar alguns exemplos de códigos pois estou ao nível de neófito ainda ;)

    terça-feira, 24 de abril de 2012 12:52
  • ghelfer,

    Utilizando a classe WebClient, vc não conseguirá fazer upload de um XML propriamente dito, mas o que vc pode fazer é realizar um POST do conteúdo XML, em string, para uma URL, e receber essa informação na URL e salvar como um XML.

    Esse é um procedimento muito comum e bastante utilizado com comunicação REST.

    []s


    Thiago J. Mônaco
    MVP Windows Phone Development
    MCP, MCAD, MCSD, MCDBA, MCTS, MCPD and MCT Professional
    Scrum Developer I and Professional Scrum Master
    http://www.windowsphonebrasil.net
    @thiagojmonaco

    sexta-feira, 27 de abril de 2012 18:18
    Moderador