none
Como passar um array em um UriTemplate RRS feed

  • Pergunta

  • Tenho um web service onde em um metodo eu recebo um array, sendo que quando vou testar dá erro :

    has a UriTemplate that expects a parameter named 'MATRICULA[]', but there is no input parameter with that name on the operation.

    A declaração está assim

    [WebGet(UriTemplate = "/Saldo?ticket={ticket}&cnpj={cnpj}&matriculas={matriculas[]}")]
    Stream Saldo(string ticket, string cnpj, ref string[] matriculas, Saldo saldo);
    Como faço para passar esse array para testar meu web service


    Junior

    sexta-feira, 15 de julho de 2016 18:18

Todas as Respostas

  • Voce nao pode especificar um array no UriTemplate. Nao existe o conceito de array em um endereço (URL)

    O que voce tem que fazer é passar uma lista separada por virgulas e depois fazer um split em um array... mais ou menos como esta descrito nesse artigo:

    http://stackoverflow.com/questions/21901108/how-to-format-uritemplate-for-multiple-parameters

    seu godigo ficara mais ou menos assim:

    [WebGet(UriTemplate = "/Saldo?ticket={ticket}&cnpj={cnpj}&matriculas={matriculas}")]
    Stream Saldo(string ticket, string cnpj, string  matriculas, Saldo saldo);

    no codigo do metodo Saldo voce vai transformar a string em um array:

    var matriculasMatriz = matriculas.Split(',');

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------


    sexta-feira, 15 de julho de 2016 18:46
  • E no meu metodo declaro como uma string ? q eu até queria limitar a qtde para 10

    public Stream Saldo(string ticket, string cnpj, ref string[] matriculas, Saldo saldo)

    e na uri ficaria assim :

    //localhost/service1.svc/saldo?ticket=1321321&cnpj=2132132&matriculas=1321321&matriculas=21321321&matriculas=232132

    ou assim

    //localhost/service1.svc/saldo?ticket=1321321&cnpj=2132132&matriculas=132132,132132,1321321,32131

    Seria assim ?


    Junior

    sexta-feira, 15 de julho de 2016 19:07
  • assim:

    //localhost/service1.svc/saldo?ticket=1321321&cnpj=2132132&matriculas=132132,132132,1321321,32131

    Voce pode criar uma excessao caso o split retorne mais do que 10 elementos para matriculas... Desconheçco um metodo para limitar isso na URI (teoricamente esta aceita qualquer coisa(

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    sexta-feira, 15 de julho de 2016 19:14
  • Tb imaginei isso, vou pegar apenas os 10 primeiros, caso informe mais serão desconsiderados.

    Obrigado pela ajuda.


    Junior

    sexta-feira, 15 de julho de 2016 19:22