Hoi,
Ik ben bezig met implementatie van de Stuf 3.10 service. Het lijkt hier te gaan om een Axis of Axis2 service. Ik ontwikkel op het Microsoft platform. Ondanks alle discussie vragen en antwoorden is het mij nog niet gelukt succesvol berichten met de gateway server uit te voeren. Heeft iemand een C# voorbeeld hoe je op basis van een bsn een persoon kan zoeken?
Wat heb ik al gedaan?
Ik kreeg van de gemeente de volgende zip "Bg0310_20140328_patch19_resolved" toegestuurd. Daarin zitten wsdl en xsd bestanden.
Het is iets meer complex om hiermee een goede WSDL te bouwen. De WSDL engine van Microsoft gaat anders met XML om. De XSD bestanden staan los van de WSDL en deze moeten ook geïmporteerd worden.
De wsdl interface kan als volgt gegenereerd worden (zelf wel directories en namespace goed zetten):
c:
cd C:\StUF\Bg0310_20140328_patch19_resolved\bg0310\vraagAntwoord
"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\wsdl.exe" /language:CS /protocol:SOAP /out:version310.cs bg0310_beantwoordVraag_vraagAntwoord.wsdl C:\StUF\Bg0310_20140328_patch19_resolved\bg0310\vraagAntwoord\resolved\bg0310_msg_stuf_vraagAntwoord_resolved.xsd c:\StUF\Bg0310_20140328_patch19_resolved\bg0310\vraagAntwoord\resolved\bg0310_msg_vraagAntwoord_resolved.xsd C:\StUF\Bg0310_20140328_patch19_resolved\bg0310\vraagAntwoord\resolved\gml_resolved.xsd C:\StUF\Bg0310_20140328_patch19_resolved\bg0310\vraagAntwoord\resolved\smil20_resolved.xsd C:\StUF\Bg0310_20140328_patch19_resolved\bg0310\vraagAntwoord\resolved\smil20-language_resolved.xsd C:\StUF\Bg0310_20140328_patch19_resolved\bg0310\vraagAntwoord\resolved\xlink_resolved.xsd C:\StUF\Bg0310_20140328_patch19_resolved\bg0310\vraagAntwoord\resolved\xml_resolved.xsd /namespace:"[Namespace]"
Ik krijg de volgende foutmeldingen:
Schema validation error: Schema with ctor/bg/0310' has invalid syntax. Th ... valid restriction of the base complex
Schema validation error: Schema withctor/bg/0310' has invalid syntax. Th..alid restriction of the base complex
Warning: Schema could not be validat incorrect results.
Er wordt geen soap client gemaakt, maar wel een ISOAPBeantwoordVraag interface.
Ik probeer nu een bericht naar de gateway te sturen. Ik roep de volgende code aan
ChannelFactory<ISOAPBeantwoordVraag> factory = new ChannelFactory<ISOAPBeantwoordVraag>("SOAPBeantwoordVraag");
ISOAPBeantwoordVraag client = factory.CreateChannel();
result = client.npsLv01(stufbericht);
((IClientChannel)client).Close();
Stufbericht is van het type 'npsLv01'
Er treden bij het genereren van een request runtime nu een paar fouten op:
Aan de classes NPSGerelateerde vraag en antwoord moeten de known types worden toegevoegd:
[KnownType(typeof(BSNe))]
[KnownType(typeof(VerblijfsadresGrpvraag))]
[KnownType(typeof(VerblijfBuitenlandGrp))]
public partial class NPSgerelateerdeAntwoord
De web operation methode die ik probeer aan te roepen genaamd 'NpsLv01' verwacht een operation attribuut en de interface een contract attribuut. [System.ServiceModel.ServiceContractAttribute(Namespace = "http://www.egem.nl/StUF/sector/bg/0310", ConfigurationName = "SOAPBeantwoordVraag")]
Als ik dat heb gedaan inclusief de web config dacht ik dat het zou lukken. Maar nee.
Het voorbeeld Stuf310 bericht ziet er als volgt uit:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.egem.nl/StUF/sector/bg/0310" xmlns:stuf="http://www.egem.nl/StUF/StUF0301" xmlns:xlin="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml">
<soapenv:Header/>
<soapenv:Body>
<bg:npsLv01 xmlns:bg="http://www.egem.nl/StUF/sector/bg/0310" xmlns:st="http://www.egem.nl/StUF/StUF0301" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<bg:stuurgegevens>
<st:berichtcode>Lv01</st:berichtcode>
<st:zender>
<st:applicatie>REPLACE:zender-applicatie</st:applicatie>
</st:zender>
<st:ontvanger>
<st:applicatie>REPLACE:ontvanger-applicatie</st:applicatie>
</st:ontvanger>
<st:referentienummer>101</st:referentienummer>
<st:tijdstipBericht>2010093014201523</st:tijdstipBericht>
<st:entiteittype>NPS</st:entiteittype>
</bg:stuurgegevens>
<bg:parameters>
<st:sortering>1</st:sortering>
<st:indicatorVervolgvraag>false</st:indicatorVervolgvraag>
<st:maximumAantal>9</st:maximumAantal>
</bg:parameters>
<bg:gelijk st:entiteittype="NPS">
<bg:inp.bsn>REPLACE:bsn</bg:inp.bsn>
</bg:gelijk>
<bg:scope>
<bg:object st:entiteittype="NPS">
<bg:inp.bsn xsi:nil="true"/>
<bg:anp.identificatie xsi:nil="true"/>
Echter de web service die ik met WSDL heb genereert, levert op dit moment een iets andere variant:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">https://wsgateway.Gemeente.nl/sbs/vraagantwoord/c1/v1/npsLv01</Action>
<ActivityId CorrelationId="de107334-ca6c-4d16-970d-8f12608a9654" xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics">81877297-46c5-4b81-9f4e-438b14f6f5f3</ActivityId>
</s:Header>
<s:Body>
<npsLv01 xmlns="https://wsgateway.Gemeente.nl/sbs/vraagantwoord/c1/v1">
<npsLv011 xmlns:d4p1="http://schemas.datacontract.org/2004/07/Conclusion.GbaWebServiceProxy" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<d4p1:gelijkField><d4p1:aanduidingNaamgebruikField i:nil="true"></d4p1:aanduidingNaamgebruikField><d4p1:aanduidingStrijdigheidNietigheidField i:nil="true">
</d4p1:aanduidingStrijdigheidNietigheidField><d4p1:aanhefAanschrijvingField i:nil="true"></d4p1:aanhefAanschrijvingField>
Dat is dus iets anders dan het voorbeeldbericht.
Wat mij opvalt zijn dat de namespace in de envelop niet aanwezig zijn. Maar dit lijkt me nog niet het probleem
Er is een npslv011 attribuut aan het bericht toegevoegd (naam van de parameter in de operation methode) die niet moet.
Er is een namespcae d4p1 (voorbeeld bericht bg) met een verkeerde namespace URI. Alle eigenschappen die als element of attribuut worden getoond krijgen niet de namespace van st (zie voorbeeldbericht) mee
Wie heeft hier ervaring mee en kan me verder helpen. Mijn dank is groot.
factory.Close();
return result;