예제 #1
0
        /// <summary>
        /// Forespørsel sendt fra Virksomhet for å hente Personer fra Oppslagstjenesten.
        /// </summary>
        /// <param name="personidentifikator">Identifikasjon av en person. Personidentifikator er er enten et fødselsnummer et gyldig D-nummer.</param>
        /// <param name="informasjonsbehov">Beskriver det opplysningskrav som en Virksomhet har definert. Du kan angi fler behov f.eks Informasjonsbehov.Kontaktinfo | Informasjonsbehov.SikkerDigitalPost.</param>
        public IEnumerable <Person> HentPersoner(string[] personidentifikator, Informasjonsbehov informasjonsbehov)
        {
            var envelope = new PersonerEnvelope(_instillinger, personidentifikator, informasjonsbehov);
            OppslagstjenesteValidator validator = SendEnvelope(envelope);

            validator.Valider();
            return(new PersonerSvar(validator.ResponseDocument).Personer);
        }
예제 #2
0
            public void Initializes_fields()
            {
                //Arrange
                var requestXmlDocument            = XmlResource.Request.GetPerson();
                var responseXmlDocument           = XmlResource.Response.GetPerson();
                var senderUnitTestCertificate     = DomainUtility.GetSenderSelfSignedCertificate();
                var oppslagstjenesteConfiguration = new OppslagstjenesteKonfigurasjon(Miljø.FunksjoneltTestmiljøVerifikasjon1, senderUnitTestCertificate);

                var responseContainer = new ResponseContainer(responseXmlDocument);

                //Act
                var oppslagstjenesteValidator = new OppslagstjenesteValidator(requestXmlDocument, responseContainer, oppslagstjenesteConfiguration);

                //Assert
                Assert.Equal(requestXmlDocument, oppslagstjenesteValidator.SentDocument);
                Assert.Equal(responseXmlDocument, responseContainer.Envelope);
                Assert.Equal(oppslagstjenesteConfiguration.Miljø, oppslagstjenesteValidator.Environment);
            }
예제 #3
0
        private OppslagstjenesteValidator SendEnvelope(AbstractEnvelope envelope)
        {
            var request = (HttpWebRequest)WebRequest.Create(_konfigurasjon.ServiceUri);

            request.ContentType = "text/xml;charset=UTF-8";
            request.Headers.Add("SOAPAction", "\"\"");
            request.Method    = "POST";
            request.KeepAlive = true;
            request.ServicePoint.Expect100Continue = false;
            request.Timeout = _konfigurasjon.TimeoutIMillisekunder;

            string netVersion = Assembly
                                .GetExecutingAssembly()
                                .GetReferencedAssemblies()
                                .Where(x => x.Name == "System.Core").First().Version.ToString();

            var assemblyVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;

            request.UserAgent = string.Format("DifiOppslagstjeneste/{1} .NET/{0},", netVersion, assemblyVersion);

            if (_konfigurasjon.BrukProxy)
            {
                request.Proxy = new WebProxy(new UriBuilder(_konfigurasjon.ProxyScheme, _konfigurasjon.ProxyHost, _konfigurasjon.ProxyPort).Uri);
            }

            var xml   = envelope.ToXml();
            var bytes = Encoding.UTF8.GetBytes(xml.OuterXml);

            var xmlValidator = new OppslagstjenesteXmlvalidator();
            var xmlValidert  = xmlValidator.ValiderDokumentMotXsd(xml.OuterXml);

            if (!xmlValidert)
            {
                throw new XmlException(xmlValidator.ValideringsVarsler);
            }

            Logging.Log(TraceEventType.Verbose, xml.OuterXml);

            try
            {
                var requestStream = request.GetRequestStream();
                requestStream.Write(bytes, 0, bytes.Length);
            }
            catch
            {
                throw new SendException("Får ikke kontakt med Oppslagstjenesten. Sjekk tilkoblingsdetaljer og prøv på nytt.");
            }
            try
            {
                var response  = request.GetResponse();
                var validator = new OppslagstjenesteValidator(response.GetResponseStream(), xml, (OppslagstjenesteInstillinger)envelope.Settings);
                return(validator);
            }
            catch (WebException we)
            {
                using (var stream = we.Response.GetResponseStream())
                    using (var reader = new StreamReader(stream))
                    {
                        var error     = reader.ReadToEnd();
                        var exception = new SoapException(error);
                        Logging.Log(TraceEventType.Critical, string.Format("> Feil ved sending (Skyldig: {0})", exception.Skyldig));
                        Logging.Log(TraceEventType.Critical, String.Format("  - {0}", exception.Beskrivelse));
                        throw exception;
                    }
            }
        }
        private void ValidateResponse(AbstractEnvelope envelope, ResponseContainer responseContainer)
        {
            var responsvalidator = new OppslagstjenesteValidator(envelope.XmlDocument, responseContainer, OppslagstjenesteKonfigurasjon);

            responsvalidator.Validate();
        }