code: public NFDistribuicaoIntRetorno consultar(final String cnpj, final DFUnidadeFederativa uf, final String chaveAcesso, final String nsu, final String ultNsu) throws Exception {
          try {
              String xmlEnvio = this.gerarNFDistribuicaoInt(cnpj, uf, chaveAcesso, nsu, ultNsu).toString();
  
              // valida o lote assinado, para verificar se o xsd foi satisfeito, antes de comunicar com a sefaz
              XMLValidador.validaConsultaDfe(xmlEnvio);
  
              final OMElement ome = AXIOMUtil.stringToOM(xmlEnvio);
  
              final NFeDistribuicaoDFeSoapStub.NFeDadosMsg_type0 dadosMsgType0 = new NFeDistribuicaoDFeSoapStub.NFeDadosMsg_type0();
              dadosMsgType0.setExtraElement(ome);
  
              final NFeDistribuicaoDFeSoapStub.NFeDistDFeInteresse distDFeInteresse = new NFeDistribuicaoDFeSoapStub.NFeDistDFeInteresse();
              distDFeInteresse.setNFeDadosMsg(dadosMsgType0);
  
              final NFeDistribuicaoDFeSoapStub stub = new NFeDistribuicaoDFeSoapStub(NFAutorizador31.AN.getNFeDistribuicaoDFe(this.config.getAmbiente()));
              final NFeDistribuicaoDFeSoapStub.NFeDistDFeInteresseResponse result = stub.nfeDistDFeInteresse(distDFeInteresse);
              final String resultadoConsulta = result.getNFeDistDFeInteresseResult().getExtraElement().toString();
  
              return new Persister(new DFRegistryMatcher()).read(NFDistribuicaoIntRetorno.class, resultadoConsulta);
          } catch (RemoteException | XMLStreamException e) {
              throw new Exception(e.getMessage());
          }
      }
docs: Metodo para consultar os dados das notas fiscais por chave de acesso ou NSU e retorna o objeto de retorno de distribuicao<br>