/// <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); }
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); }
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(); }