Como passar uma quantidade variável de parmeters para web-service
-
09-06-2019 - |
Pergunta
Estamos tentando criar um web service que pretendemos passar uma variável quantidade de variáveis a ele.
Isso pode ser feito?
Basicamente, em vez de passar todos os parâmetros possíveis desejamos passar apenas o conjunto de valores e usar os padrões definidos na web-service.
Aqui está um exemplo do XML nós estamos olhando para mandar, seria enviada uma quantidade desconhecida de funções, consoante o necessário retorno.
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<WebMethod xmlns="http://tempuri.org/">
<domains>
<function1>
<title>Some Title</title>
<type>25</type>
</function1>
<function2 />
<function3>
<param>13</param>
</function3>
</domains>
</WebMethod>
</soap:Body>
</soap:Envelope>
Será que isso funciona ou deve-se fazer de uma maneira diferente?
Solução
Eu iria passar em um documento xml em vez de fazer concreate funções para isso.
O webservice no seu exemplo é falha - o consumidor precisa saber muito sobre esta interface e a implementação do webservice internamente.
Documento XML e, em seguida, gravata, que com um XSD.De que maneira você pode prevalidte a entrada para o webservice.
Dê uma olhada nesses
Eu também recomendaria utilizar isto para o teste de webservices e a sua livre WSStudio
Outras dicas
Você pode simplesmente passar um comprimento variável de array como parâmetro.
Se você não gosta da idéia de uma Matriz (isso não é slating Konrad resposta - você pode ter diferentes param tipos) você pode passar objetos complexos (por exemplo,objetos que você fez a si mesmo)..A desvantagem é que você não pode, em seguida, teste usando o ASMX página, mas seria necessário para fazer tudo isso em código (o que não é realmente uma coisa ruim, principalmente se você está acostumado).
Concordo com littlegeek.Não faça de seu serviço da web é o método difícil.Torná-lo um receptor de ponto de extremidade para receber mensagens.Particularmente, uma Mensagem de Comando.