Bag 2.0 extract download d.m.v soap en login

Een eenvoudige POST naar https://service10.kadaster.nl/gds2/afgifte/productstore met BODY

<soapenv:Envelope xmlns:soapenv=“http://schemas.xmlsoap.org/soap/envelope/” xmlns:v20=“http://www.kadaster.nl/schemas/gds2/make2stock/v20201201”>
soapenv:Header/
soapenv:Body
v20:BestandenlijstOpvragenRequest
v20:Artikelnummers2532</v20:Artikelnummers>
</v20:BestandenlijstOpvragenRequest>
</soapenv:Body>
</soapenv:Envelope>

met HEADER
Authorization en de Base64Value
werkt uitstekend op mijn eigen server.

Echter, als ik hetzelfde uitvoer op de server van m’n klant krijg ik 405 Method No Allowed.

Hoe kan dit? Als ik overigens WEB.postman.co gebruik dan krijg ik deze foutmelding zowel op de server van m’n klant als op m’n eigen server.

Hulp zeer gewaardeerd! :slight_smile:

Zoek de verschillen…
Eerste wat bij mij opkomt is firewall, tweede is .NET versie ivm https, en zo zijn er nog wel wat dingen te verzinnen…

Hoe? Curl, FME, een browser, Postman? Zou ook nog een dingetje kunnen zijn. Maar op dit moment is er door lezers hier heeel weinig over te zeggen, omdat we jou omgeving niet kennen.

1 like

Dankje voor je reactie Stefan. Verschillen in de omgeving hoefde ik niet uit te zoeken. Ik heb het met python geprobeerd en daarmee werkte het wel.

Hmmm, ok. Nou, in ieder geval blij dat het nu lukt.

Persoonlijk zou ik toch graag willen weten waarom mijn Plan A op de ene plek niet werkte, en op de andere plek wel. Al was het alleen maar om het feit dat de ene plek van een klant was, en je dus de garantie hebt dat je het op andere plekken/klanten ook tegen het lijf loopt (en die klanten staan wellicht Python niet toe op een server…).
Maar goed, that’s my 2 cents.

Ben het met iedereen eens dat het kadaster best wel meer inzicht of een fatsoenlijke manier zou kunnen geven hoe de authenticatie werkt. Ze weten het zelf niet eens en nu is het prutswerk uit het jaar 0.

Ik liep ook tegen probleem aan dat dat downloaden wel lukte maar ik heb ook die lijst met AfgifteID’s nodig.
Door de vraag van Risingblue werd ik wel op juiste spoor gezet. Die “Method Not Allowed” was ik ook al tegengekomen en getackeld maar daarna niet gedacht om die basic authentication hier nog een keer te gebruiken. Het lijkt erop dat ik alle stappen nu compleet heb in postman, klaar voor het echte werk in c#.

Eerste stap is het aanloggen.
In de documentatie (ehm) worden daar hints gegeven.
De body zou volgens documentatie moeten zijn: user=xxx&password=xxx
Maar postman maakt er in de header dan Content-Type=tekst/plain van als je dat uitvinkt en expliciet: Content-Type=application/x-www-form-urlencoded invult gaat het wel goed.
Of je vult form-data met twee keys/values (1 voor user en 1 voor password) in en dan wordt er in de body user:xxx password:xxx van gemaakt en gaat het ook goed.
Nu krijg je dus een aangemelde pagina met cookie terug (heel primitief, zucht). Maar goed die cookie heb je dan wel.

Het soap productstore request, heel belangrijk, mag geen content-type header hebben (staat ergens een hint in documentatie). Postman doet dit standaard wel en daardoor krijg je die ‘Method Not Allowed’.
Bij authorization gebruik je “basic auth” met username en password, postman maakt hier dan die authorization header met een base64 van.
Nu krijg ik dus een soap response met de lijst van afgifte id’s daarin.

Vervolgens kun je een mutatie downloaden met de download url en het AfgifiteID in de url. In deze GET moet dus de cookie aan de header toegevoegd worden.

Nog een aanvulling. Er staat wel leuk dat er geen Content-Type meegestuurt mag worden maar dat is in de praktijk iets weerbarstiger. De C# HttpClient staat niet toe dat deze leeg is of weggehaald wordt. Het blijkt dat het met een Content-Type: ‘text/xml’ ook werkt.