TransWikia.com

Send List of objects to my wcf web service

Stack Overflow em Português Asked by CS 2014 on November 17, 2021

Boas pessoal,

Preciso de criar um Web service WCF que recebe uma lista de objectos e insere-a numa base de dados postgresql.
Para testar criei uma app cliente vb.net, mas algo não está a correr como esperado.

Até ao momento tenho o seguinte condigo implementado:

IService.cs

  public interface IService1
   {
    [OperationContract]
    int InsertClients(MyListofClients clients);
   }

  [DataContract]
  public class MyListofClients
  {

    [DataMember]
    List<Client> Clients { get; set; }

  }

[DataContract]
public class Client
{
    [DataMember]
    public string clientId { get; set; }

    [DataMember]
    public string ClientName { get; set; }

    [DataMember]
    public List<Client> Clients { get; set; }
}
}  

Servic1.svc

 public int InsertClients(MyListofClients clients)
  {
    int res, result;
    using (NpgsqlConnection conn = new NpgsqlConnection(connStringFarm))
    {
        conn.Open();
        List<MyListofClients> firstStringList = new       List<MyListofClients>();
        string cmdStr = String.Format("Insert Into table (x1,x2)" +
                                       " VALUES(@x1,@x2)");

        foreach (var item in firstStringList)
        {
            NpgsqlCommand cmd = new NpgsqlCommand(cmdStr, conn);
            result = cmd.ExecuteNonQuery();
        }

        conn.Close();
        return 0;
       }

App Client

  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles          Button1.Click
    Dim db_comm As New NpgsqlCommand
    Dim Reader As NpgsqlDataReader


    Dim query As String = "Select code1,name1 from clientes"
    db_comm.CommandText = query
    db_comm.Connection = conn
    conn.open
    Reader = db_comm.ExecuteReader

    Dim list As New List(Of String)

    While Reader.Read
            list.Add(Reader.GetString("code1"))
            list.Add(Reader.GetString("name1"))
    End While

    Dim API As APICS.Service1Client = New APICS.Service1Client()
    API.InsertClientsAsync(list)
End Sub

ERROR Value of type ‘List(Of String)’ cannot be converted to
‘MyListofClients’.

Penso que o problema tem a ver com a list que tem de ser do tipo ‘MyListofClients‘.

Dim list As New List(Of APICS.MyListofClients)

no entanto não consigo perceber como devo enviar a lista desta forma

Alguma dica??

One Answer

CS, te aconselho a gerar o proxy do WebService usando a opção "Add Service Reference..." que surge ao clicar com o botão direito do mouse sobre as "References".

tente utilizar um endpoint do tipo "Metadata Exchange" na hora de baixar as informações do serviço, este abordagem é preferível que usando o bom e velho ?wsdl.

se configurar deste jeito, a sua aplicação cliente sequer permitiria enviar uma lista de strings ao invés de uma lista de clientes.

agora tente mudar a sua chamada para o seguinte.:

Dim list As New List(Of APICS.Client)

While Reader.Read
        Dim cliente As APICS.Client = New APICS.Client()
        cliente.clientId = Reader.GetString("code1"))
        cliente.ClientName = Reader.GetString("name1"))
        list.Add(cliente)
End While

lembre-se que não sou programador VB.NET, então o codigo acima pode apresentar alguns erros básicos (de sintaxe), mas à logica dele continua a mesma.

Answered by Tobias Mesquita on November 17, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP