none
Consumir WebService que Retorna uma String RRS feed

  • Pergunta

  • Pessoal, estou precisando consumir no C# .Net um WebService que retorna uma String.

    Alguem poderia me passar um exemplo?

    Abaixo segue o WebService que eu quero consumir:

    <?xml version="1.0" encoding="utf-8" ?>

      <string xmlns="http://www.blablablabla.com"> <NewDataSet> <Cliente> <Column1>76768768686876</Column1> <Codigo>400</Codigo> <id>636363</id> <Nome>Joao da Silva</Nome> </Cliente> </NewDataSet></string>
    terça-feira, 24 de abril de 2007 21:13

Respostas

  • Oi !

     

    Primeiramente, você está chamando seu webService duas vezes, na linha que atribui o datasource e na linha anterior, isso é ruim em termos de comunicação de rede.

     

    Segundo, webService não transmite formatação, mas dados. Se o tipo de retorno deste webService é string, então está me parecendo que fizeram uma pegadinha com você. Quem criou este webService, ao invés de devolver um dataset (porque tinha em mãos um dataset!) fez um getxml no dataset e devolveu apenas o xml do dataset na forma de uma string única.

     

    Faça o seguinte :

     

    Code Snippet

    DataSet ds=new DataSet();

    string s=wservico.getcliente(txtcodigo.Text);

    System.IO.MemoryStream m=new System.IO.MemoryStream(System.Text.Encoding.ASCII.GetBytes(s));

    ds.readxml(m);

    DataGrid1.DataSource = ds.Tables[0];

    DataGrid1.DataBind();

     

     Acredito que vai funcionar sem problemas, confira.

     

    []'s

     

     

     

     

    terça-feira, 24 de abril de 2007 23:15

Todas as Respostas

  • Oi !

     

    Pelo Visual Studio, faça uma webReference para o endereço deste webService (.asmx se foi criado em .NET ou WSDL se não foi).

     

    Você pode fazer a webReference clicando com o botão direito no projeto e pedindo "Add web reference". Na própria janela de webReference é perguntado qual nome você dará ao namespace deste webService. O nome escolhido por você vira um namespace e dentro você encontrará as classes disponibilizadas pelo webService.

     

    Faça new em uma das classes e utilize seus métodos, como se fosse uma classe local.

     

    []'s

     

    terça-feira, 24 de abril de 2007 21:24
  • O problema nao é esse.

    Eu ate consigo consumi-lo, listando no DataGrid mais nao vem formatado.

    Quando eu consumo um WS que retorna um DataSet eu consigo listar tudin no DataGrid cada campo no seu lugar.

    Estou fazendo assim:

     

    webservice.servico wservico = new webservice.servico();

    wservico.getcliente(txtcodigo.Text);

    DataGrid1.DataSource = wservico.getcliente(txtcodigo.Text);

    DataGrid1.DataBind();

     

    Sendo que assim ele me traz sem a formatação.

    Acho que tenho que fazer antes o tratamento da String XML.

    Ai que esta o problema.

    terça-feira, 24 de abril de 2007 21:55
  • Oi !

     

    Primeiramente, você está chamando seu webService duas vezes, na linha que atribui o datasource e na linha anterior, isso é ruim em termos de comunicação de rede.

     

    Segundo, webService não transmite formatação, mas dados. Se o tipo de retorno deste webService é string, então está me parecendo que fizeram uma pegadinha com você. Quem criou este webService, ao invés de devolver um dataset (porque tinha em mãos um dataset!) fez um getxml no dataset e devolveu apenas o xml do dataset na forma de uma string única.

     

    Faça o seguinte :

     

    Code Snippet

    DataSet ds=new DataSet();

    string s=wservico.getcliente(txtcodigo.Text);

    System.IO.MemoryStream m=new System.IO.MemoryStream(System.Text.Encoding.ASCII.GetBytes(s));

    ds.readxml(m);

    DataGrid1.DataSource = ds.Tables[0];

    DataGrid1.DataBind();

     

     Acredito que vai funcionar sem problemas, confira.

     

    []'s

     

     

     

     

    terça-feira, 24 de abril de 2007 23:15
  • Dennes, exatamente o ws estava fazendo um getxml (eu sabia) nao era pegadinha.

    Esse ws foi feito usando o VB .NEt e o Delphi 6 nao estava conseguindo consumir ele como DataSet, por isso tivemos que da um getxml.

    Como estava dando uns problemas no Delphi decidi comsumi-lo usando o C# .NET para testar.

    Valeu pela força, deu certin desse modo.

    Abraço

    quarta-feira, 25 de abril de 2007 01:41