Mijn ArcGIS Data Interoperability ETL-proces verliep goed, maar plotseling gaf de ArcGIS Online Feature Service-schrijver een foutmelding die mijn werkruimte beëindigde, het foutbericht zag er als volgt uit:<\/P>
De foutcode van de server was '400' en het bericht was: ''. Details: 'Veld public_description bevat ongeldige html-inhoud.<\/FONT><\/P>De gegevens komen van een lokale overheid 311-site - het veld public_description is waar het publiek de details van hun servicemelding heeft vastgelegd. Hoe is HTML daar terechtgekomen? Wat was er ongeldig aan? Hoe kan ik mijn vertaling versterken om dit soort dingen op te vangen? <\/P>Na veel onderzoek en een aantekening voor mezelf om writer rejection handling opnieuw bij Safe aan te kaarten, vond ik de problematische data. Het onderzoek deed me denken aan wiskundeles toen we Isaac Newtons regula falsi-methode doorliepen, caching inschakelden en twee Sampler-transformers gebruikten om de boosdoener in te sluiten totdat ik hem vond. Het was niet eens HTML, het was een tussen haakjes geplaatste e-mail: <somebody@hotmail.com><\/STRONG>.<\/P>Oké, dacht ik, het is redelijk om een e-mail in een vrij tekstveld te plaatsen. Waarom is de feature service daar zo kieskeurig over? <\/P>Het blijkt dat feature services een instelling hebben (standaard ingeschakeld) die potentieel schadelijke inhoud blokkeert. Ik heb een paar opties. Als mijn data echt HTML-inhoud had, kon ik het veld percent-encoden met de TextEncoder en HTML-modus, ik kon handmatig haakjes coderen als < en >, ik kon alles binnen tags verwijderen met StringReplacer en een reguliere expressie <.*><\/STRONG>, of ik kon de service-eigenschap wijzigen en de data doorlaten. Stel dat ik voor deze laatste optie kies.<\/P>Ik moet een admin REST API-aanroep gebruiken. De eigenschap die ik moet wijzigen is xssPreventionInfo.<\/P>Om dit te doen, ga in je browser en ingelogd als eigenaar van de service naar het Content-gedeelte in de Home-app en navigeer naar het feature service-item. Rechtsonder is een bedieningselement waarmee je het item REST API kunt bekijken:<\/P>
<\/span><\/P>Ga daarheen in je browser (je URL zal natuurlijk anders zijn).<\/P>https:\/\/services.arcgis.com\/FQD0rKU8X5sAQfh8\/arcgis\/rest\/services\/Get_It_Done_311_Requests\/FeatureServer?token=<yourtoken><\/A><\/P>Om toegang te krijgen tot de admin API voeg je het woord 'admin' toe tussen 'rest' en 'services':<\/P>
https:\/\/services.arcgis.com\/FQD0rKU8X5sAQfh8\/ArcGIS\/rest\/admin\/services\/Get_It_Done_311_Requests\/FeatureServer?token=<yourtoken><\/A><\/P>Ga dan onderaan de pagina naar het UpdateDefinition-endpoint:<\/P>
https:\/\/services.arcgis.com\/FQD0rKU8X5sAQfh8\/ArcGIS\/rest\/admin\/services\/Get_It_Done_311_Requests\/FeatureServer\/updateDefinition?token=<yourtoken><\/A><\/P>Zoek nu naar de eigenschap xssPreventionInfo, stel de waarde voor xssInputRule in op sanitizeInvalid:<\/STRONG><\/P>
<\/span><\/P>Klik op de knop Update Service Definition en controleer of deze succesvol wordt voltooid. Nu kun je HTML en dingen zoals <somebody@hotmail.com> naar je feature service schrijven!<\/P>