none
c# webservice cliente - nullreferenceexception RRS feed

  • Pergunta

  • Saudações amigos,

    Poderiam por favor, me ajudar com o problema abaixo? Estou testando o envio de dados para um WSDL, mas quando referencio "sub-nodes" para criação do envelope recebo o erro NULLREFERENCEEXCEPTION. O que estou fazendo errado?

    terça-feira, 1 de novembro de 2016 12:54

Respostas

  • Márcio, sua propriedade atendimentoServicos não é inicializada no construtor da class AtendimentoPoupaFilaType, por isso está nula.

    Veja o tipo dela e inicialize (instancie uma coleção ou array da respectiva classe de atendimentoServicos) conforme sua necessidade.



    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    terça-feira, 1 de novembro de 2016 13:10

Todas as Respostas

  • Olá Márcio,

    Para analisar melhor, teríamos que saber como é essa classe AtendimentoPoupafilaType, mas pelo que o erro indica você não tem nenhum item nessa coleção "atendimentoServicos" que está tentando referenciar. Acredito que tenha que criar o objeto antes de usá-lo ou algo do gênero, como por exemplo:

    var serv = sintoniaAtendimento.atendimentoServicos = new sintoniaAtendimento.atendimentoServicos();
    serv.detalhes = "bla bla";

    A questão é que o que está tentando acessar é nulo e precisar ser adicionado/implementado. Verifique a documentação bem certo, acredito que seja algo assim.

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco


    terça-feira, 1 de novembro de 2016 13:04
  • Márcio, sua propriedade atendimentoServicos não é inicializada no construtor da class AtendimentoPoupaFilaType, por isso está nula.

    Veja o tipo dela e inicialize (instancie uma coleção ou array da respectiva classe de atendimentoServicos) conforme sua necessidade.



    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    terça-feira, 1 de novembro de 2016 13:10
  • Olá André, boa tarde.

    Obrigado pelo retorno, da forma como indicou funcionou.

    Fiquei com uma outra dúvida, o método para o envio dos dados, que no exemplo que enviei deixei comentado:

     wsSintonia.cadastrarAtendimento(sintoniaAtendimento);

    Recebe os dados apenas de AtendimentoPoupafilaType, como eu poderia enviar também os dados de serviço como um único xml?

    abaixo reproduzo a WSDL:

    This XML file does not appear to have any style information associated with it. The document tree is shown below.
    <wsdl:definitions xmlns:ns1="br.gov.sintonia.cliente.commons" xmlns:ns2="http://sintoniaservice.sintonia.gov.br/buscarpororganograma" xmlns:ns3="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://sintoniaservice.sintonia.gov.br" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="SintoniaServico" targetNamespace="http://sintoniaservice.sintonia.gov.br">
    <wsdl:types>
    <xs:schema xmlns:tns="http://sintoniaservice.sintonia.gov.br/buscarpororganograma" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://sintoniaservice.sintonia.gov.br/buscarpororganograma" version="1.0">
    <xs:element name="Atendimento" type="tns:AtendimentoPorOrganograma"/>
    <xs:element name="AtendimentoServico" type="tns:AtendimentoServico"/>
    <xs:element name="atendimentosPorOrganograma" type="tns:AtendimentosPorOrganograma"/>
    <xs:complexType name="AtendimentosPorOrganograma">
    <xs:sequence>
    <xs:element maxOccurs="unbounded" minOccurs="0" name="atendimentoPorOrganograma" type="tns:AtendimentoPorOrganograma"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="AtendimentoPorOrganograma">
    <xs:sequence>
    <xs:element minOccurs="0" name="atendimentoCodigo" type="xs:long"/>
    <xs:element minOccurs="0" name="atendimentoDataHoraInicio" type="xs:dateTime"/>
    <xs:element minOccurs="0" name="atendimentoTempo" type="xs:int"/>
    <xs:element minOccurs="0" name="atendimentoCodigoNota" type="xs:long"/>
    <xs:element minOccurs="0" name="atendimentoSenha" type="xs:string"/>
    <xs:element minOccurs="0" name="equipamentoCodigo" type="xs:long"/>
    <xs:element minOccurs="0" name="equipamentoHostName" type="xs:string"/>
    <xs:element minOccurs="0" name="equipamentoLocalizacao" type="xs:string"/>
    <xs:element minOccurs="0" name="equipamentoIP" type="xs:string"/>
    <xs:element minOccurs="0" name="atendenteCPF" type="xs:string"/>
    <xs:element minOccurs="0" name="atendenteNome" type="xs:string"/>
    <xs:element maxOccurs="unbounded" minOccurs="0" name="atendimentosServicos" nillable="true" type="tns:AtendimentoServico"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="AtendimentoServico">
    <xs:sequence>
    <xs:element minOccurs="0" name="codigo" type="xs:long"/>
    <xs:element minOccurs="0" name="tempo" type="xs:int"/>
    <xs:element minOccurs="0" name="servicoCodigo" type="xs:long"/>
    <xs:element minOccurs="0" name="servicoNome" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    </xs:schema>
    <xs:schema xmlns:tns="http://sintoniaservice.sintonia.gov.br" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://sintoniaservice.sintonia.gov.br" version="1.0">
    <xs:element name="SintoniaServicoException" type="tns:sintoniaServicoExceptionInfo"/>
    <xs:complexType name="sintoniaServicoExceptionInfo">
    <xs:sequence>
    <xs:element minOccurs="0" name="codigo" type="xs:string"/>
    <xs:element minOccurs="0" name="mensagem" type="xs:string"/>
    <xs:element minOccurs="0" name="detalhe" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    </xs:schema>
    <xs:schema xmlns:ns1="br.gov.sintonia.cliente.commons" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="br.gov.sintonia.cliente.commons.atendimento" version="1.0">
    <xs:import namespace="br.gov.sintonia.cliente.commons"/>
    <xs:element name="atendimentoPoupaFila" type="ns1:AtendimentoPoupafilaType"/>
    </xs:schema>
    <xs:schema xmlns:tns="br.gov.sintonia.cliente.commons" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="br.gov.sintonia.cliente.commons" version="1.0">
    <xs:element name="atendimento" type="tns:AtendimentoType"/>
    <xs:element name="atendimentoServico" type="tns:AtendimentoServicoType"/>
    <xs:element name="fila" type="tns:FilaType"/>
    <xs:element name="pergunta" type="tns:PerguntaType"/>
    <xs:element name="pesquisaResposta" type="tns:PesquisaRespostaType"/>
    <xs:element name="servico" type="tns:ServicoType"/>
    <xs:element name="tipoAtendimento" type="tns:TipoAtendimentoType"/>
    <xs:element name="tipoSenha" type="tns:TipoSenhaType"/>
    <xs:complexType name="AtendimentoPoupafilaType">
    <xs:complexContent>
    <xs:extension base="tns:AtendimentoType">
    <xs:sequence>
    <xs:element minOccurs="0" ref="tns:tipoSenha"/>
    <xs:element form="qualified" minOccurs="0" name="tempoEspera" type="xs:long"/>
    <xs:element form="qualified" minOccurs="0" name="tempoDeslocamento" type="xs:long"/>
    <xs:element minOccurs="0" ref="tns:fila"/>
    <xs:element minOccurs="0" ref="tns:tipoAtendimento"/>
    <xs:element form="qualified" minOccurs="0" name="codOrgao" type="xs:int"/>
    <xs:element form="qualified" minOccurs="0" name="codPosto" type="xs:int"/>
    </xs:sequence>
    </xs:extension>
    </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="AtendimentoType">
    <xs:sequence>
    <xs:element form="qualified" minOccurs="0" name="cpfAtendente" type="xs:string"/>
    <xs:element form="qualified" minOccurs="0" name="hostname" type="xs:string"/>
    <xs:element form="qualified" minOccurs="0" name="senha" type="xs:string"/>
    <xs:element form="qualified" minOccurs="0" name="horaGeracaoSenha" type="xs:string"/>
    <xs:element form="qualified" minOccurs="0" name="protocolo" type="xs:string"/>
    <xs:element form="qualified" minOccurs="0" name="inicioAtendimento" type="xs:string"/>
    <xs:element form="qualified" minOccurs="0" name="tempoAtendimento" type="xs:long"/>
    <xs:element form="qualified" minOccurs="0" name="atendimentoServicos">
    <xs:complexType>
    <xs:sequence>
    <xs:element maxOccurs="unbounded" minOccurs="0" ref="tns:atendimentoServico"/>
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    <xs:element form="qualified" minOccurs="0" name="pesquisaRespostas">
    <xs:complexType>
    <xs:sequence>
    <xs:element maxOccurs="unbounded" minOccurs="0" ref="tns:pesquisaResposta"/>
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="TipoSenhaType">
    <xs:sequence>
    <xs:element form="qualified" minOccurs="0" name="codTipoSenha" type="xs:int"/>
    <xs:element form="qualified" minOccurs="0" name="descricao" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="FilaType">
    <xs:sequence>
    <xs:element form="qualified" minOccurs="0" name="codFila" type="xs:int"/>
    <xs:element form="qualified" minOccurs="0" name="descricao" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="TipoAtendimentoType">
    <xs:sequence>
    <xs:element form="qualified" minOccurs="0" name="codTipoAtendimento" type="xs:int"/>
    <xs:element form="qualified" minOccurs="0" name="descricao" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="AtendimentoServicoType">
    <xs:sequence>
    <xs:element form="qualified" minOccurs="0" name="tempo" type="xs:long"/>
    <xs:element form="qualified" minOccurs="0" name="detalhes" type="xs:string"/>
    <xs:element minOccurs="0" ref="tns:servico"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ServicoType">
    <xs:sequence/>
    <xs:attribute name="codigo" type="xs:long" use="required"/>
    <xs:attribute name="nome" type="xs:string" use="required"/>
    </xs:complexType>
    <xs:complexType name="PesquisaRespostaType">
    <xs:sequence>
    <xs:element minOccurs="0" ref="tns:pergunta"/>
    <xs:element minOccurs="0" name="valor" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="PerguntaType">
    <xs:sequence>
    <xs:element minOccurs="0" name="tempoResposta" type="xs:int"/>
    <xs:element minOccurs="0" name="titulo" type="xs:string"/>
    <xs:element minOccurs="0" name="pergunta" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    </xs:schema>
    </wsdl:types>
    <wsdl:message name="SintoniaServicoException">
    <wsdl:part element="tns:SintoniaServicoException" name="SintoniaServicoException"></wsdl:part>
    </wsdl:message>
    <wsdl:message name="cadastrarAtendimentoResponse">
    <wsdl:part name="return" type="xsd:string"></wsdl:part>
    </wsdl:message>
    <wsdl:message name="cadastrarAtendimento">
    <wsdl:part name="atendimento" type="ns1:AtendimentoPoupafilaType"></wsdl:part>
    </wsdl:message>
    <wsdl:message name="buscarAtendimentoPorOrganogramaDataResponse">
    <wsdl:part name="atendimentosPorOrganograma" type="ns2:AtendimentosPorOrganograma"></wsdl:part>
    </wsdl:message>
    <wsdl:message name="buscarAtendimentoPorOrganogramaData">
    <wsdl:part name="codigoOrganograma" type="xsd:long"></wsdl:part>
    <wsdl:part name="data" type="xsd:dateTime"></wsdl:part>
    </wsdl:message>
    <wsdl:portType name="SintoniaServico">
    <wsdl:operation name="cadastrarAtendimento">
    <wsdl:input message="tns:cadastrarAtendimento" name="cadastrarAtendimento"></wsdl:input>
    <wsdl:output message="tns:cadastrarAtendimentoResponse" name="cadastrarAtendimentoResponse"></wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="buscarAtendimentoPorOrganogramaData">
    <wsdl:input message="tns:buscarAtendimentoPorOrganogramaData" name="buscarAtendimentoPorOrganogramaData"></wsdl:input>
    <wsdl:output message="tns:buscarAtendimentoPorOrganogramaDataResponse" name="buscarAtendimentoPorOrganogramaDataResponse"></wsdl:output>
    <wsdl:fault message="tns:SintoniaServicoException" name="SintoniaServicoException"></wsdl:fault>
    </wsdl:operation>
    </wsdl:portType>
    <wsdl:binding name="SintoniaServicoSoapBinding" type="tns:SintoniaServico">
    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="cadastrarAtendimento">
    <soap:operation soapAction="" style="rpc"/>
    <wsdl:input name="cadastrarAtendimento">
    <soap:body namespace="http://sintoniaservice.sintonia.gov.br" use="literal"/>
    </wsdl:input>
    <wsdl:output name="cadastrarAtendimentoResponse">
    <soap:body namespace="http://sintoniaservice.sintonia.gov.br" use="literal"/>
    </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="buscarAtendimentoPorOrganogramaData">
    <soap:operation soapAction="" style="rpc"/>
    <wsdl:input name="buscarAtendimentoPorOrganogramaData">
    <soap:body namespace="http://sintoniaservice.sintonia.gov.br" use="literal"/>
    </wsdl:input>
    <wsdl:output name="buscarAtendimentoPorOrganogramaDataResponse">
    <soap:body namespace="http://sintoniaservice.sintonia.gov.br" use="literal"/>
    </wsdl:output>
    <wsdl:fault name="SintoniaServicoException">
    <soap:fault name="SintoniaServicoException" use="literal"/>
    </wsdl:fault>
    </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="SintoniaServico">
    <wsdl:port binding="tns:SintoniaServicoSoapBinding" name="SintoniaServicoPort">
    <soap:address location="http://10.0.0.0:8080/sintonia/SintoniaServico"/>
    </wsdl:port>
    </wsdl:service>
    </wsdl:definitions>

    terça-feira, 1 de novembro de 2016 14:23
  • Márcio,

    Não tenho como afirmar, afinal esse tipo de arquivo não tem um padrão estabelecido, cada um implementa da forma que deseja. Recomendo olhar a documentação ou entrar em contato com o pessoal para ter mais detalhes.


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    terça-feira, 1 de novembro de 2016 16:00