none
Web Services RRS feed

  • Pergunta

  • Boa tarde pessoal,

              Estou com um probleminha na hora de criar o Client do Web Services, por incrível que pareça eu acho mais fácil a criação do Server. É o seguinte: Tenho que pegar todo o conteúdo de uma tabela com o Web Services Server, já fiz e coloquei ele para armazenar em um DataSet, não sei se fiz da melhor maneira possível, mais está funcionando. O meu Client tem que pegar esse método que retorna esse DataSet e armazenar esses dados num Array e depois INSERIR em outro Banco de Dados, outra Tabela. No entanto, não estou sabendo fazer esse Array para armazenar esses dados. Por isso, estou pedindo um HELP ME PLEASE a vocês. Só para constar, nunca havia feito um Web Services antes, estou começando a trabalhar com ele agora. Abaixo segue o código do meu Web Services Server, e o Client eu criei na mesma solução.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Services;
    using System.Web.Services.Protocols;
    using System.Data;
    using System.Data.SqlClient;
    using System.Web.Configuration;
    using System.Collections;
    using System.Xml;
    using System.Net;

    namespace WSServer
    {
        /// <summary>
        /// Summary description for Service1
        /// </summary>
        [WebService(Namespace = "http://tempuri.org/")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        [System.ComponentModel.ToolboxItem(false)]
        // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
        // [System.Web.Script.Services.ScriptService]
        public class Service1 : System.Web.Services.WebService
        {

            [WebMethod]
            public string FTVendaLivros()
            {
                //string de conexão com o banco de dados
                string conectar = WebConfigurationManager.ConnectionStrings["SAPIConnectionString"].ConnectionString;

                //comando SQL a ser executado
                string sql = "SELECT * FROM TB_CARGO;";

                //criando conexão com o banco de dados
                SqlConnection conexao = new SqlConnection(conectar);

                //criando objeto de comando
                SqlCommand comando = new SqlCommand(sql, conexao);

                //criando um DataSet
                DataSet RecebeDataSet = new DataSet();

                //recebendo a string que contém o Script SQL a ser executado (outra forma)
                //comando.CommandText = sql;

                //recebendo a string que contém o Script SQL a ser executado
                comando.CommandType = CommandType.Text;

                
                using(conexao)
                {
                    //conexao.Open();
                    
                    //criando um DataAdpter
                    SqlDataAdapter adpter = new SqlDataAdapter(comando);

                    //comando.Parameters.Add(new SqlParameter("@IdCargo", codigo));

                    //resultado = Convert.ToString(comando.ExecuteScalar());

                    //recebendo o DataSet
                    adpter.Fill(RecebeDataSet);

                }

                //retornando o DataSet
                return RecebeDataSet.GetXml();
            }
            
            
            //consumindo o Web Services WSServer
            public string GetWService()
            {
                //criando uma instância do objeto
                localhost.Service1 getwservice = new localhost.Service1();

                //criando um array para receber os dados
                ArrayList lista = new ArrayList();

                lista.Add(getwservice.FTVendaLivros());

                //limpa o array
                lista.Clear();

                //conta quantos objetos tem
                int qtd = lista.Count;

                //for (int i = 0; i < qtd; i++)
                //{
                //    i++;
                //}

                return lista.ToString();

                           
            }
        }
    }

    terça-feira, 28 de agosto de 2012 20:38

Todas as Respostas

  • Olá Marcos, tudo bem?

    Bom, seu webservice está correto e seu método retorna o XML. O que você precisa é carregar esse XML para imputar no banco de dado correto?

    Porque você não carrega esse XML para um DataSet antes de tudo? Segue código de exemplo:

    public string GetWService()
    {
        localhost.Service1 getwservice = new localhost.Service1();
    
        string XML = getwservice.FTVendaLivros();
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.LoadXml(XML);
        XmlNodeReader xmlReader = new XmlNodeReader(xmlDoc);
    
        DataSet ds = new DataSet();
        ds.ReadXml(xmlReader);
    
        // Necessita implementar a gravação dos dados do DataSet no banco de dados
        throw new NotImplementedException(); // Remover essa linha
    
        return string.Empty;
    }

    Para gerar o SCRIPT de insert, esse link abaixo poderá lhe ajudar.

    Generate Insertion Scripts Using .NET 2.0

    http://www.codeproject.com/Articles/19719/Generate-Insertion-Scripts-Using-NET-2-0


    Atenciosamente,
    Raphael A. F. Cardoso
    Blog: www.csharpbrasil.com.br
    Twitter: @csharpbrasil / @ferronicardoso

    “Se um dia você tiver que escolher entre o mundo e o amor, lembre-se: Se escolher o mundo ficará sem amor, mas se você escolher o amor, com ele conquistará o mundo” (Albert Einstein)

    quinta-feira, 30 de agosto de 2012 17:01
  • Obrigado Raphael.

       Eu vou testar o código.

    Att,

    Marcos Saraiva


    Marcos Saraiva

    quinta-feira, 30 de agosto de 2012 17:25