Mi proceso ArcGIS Data Interoperability ETL iba bien, pero de repente el escritor del ArcGIS Online Feature Service lanzó un error que terminó mi espacio de trabajo, el mensaje de error fue el siguiente:<\/P>
El código de error del servidor fue '400' y el mensaje fue: ''. Detalles: 'El campo public_description tiene contenido html inválido.<\/FONT><\/P>Los datos provienen de un sitio 311 del gobierno local - el campo public_description es donde el público ha capturado los detalles de su solicitud de servicio. ¿Cómo llegó HTML allí? ¿Qué tenía de inválido? ¿Cómo puedo reforzar mi traducción para detectar este tipo de cosas? <\/P>Después de mucha investigación y anotarme a mí mismo traer manejo de rechazo del escritor con Safe de nuevo, encontré los datos problemáticos. La investigación me recordó a la clase de matemáticas cuando trabajamos con el método regula falsi de Isaac Newton, activando la caché y usando dos transformadores Sampler para acotar al culpable hasta encontrarlo. No era ni siquiera HTML, era un correo electrónico entre corchetes: <somebody@hotmail.com><\/STRONG>.<\/P>OK, pensé, es razonable poner un correo electrónico en un campo de texto libre. ¿Por qué el servicio de entidades es tan quisquilloso con eso? <\/P>Resulta que los servicios de entidades tienen una configuración (activada por defecto) para bloquear contenido potencialmente dañino. Tengo algunas opciones. Si mis datos realmente tuvieran contenido HTML podría codificar porcentualmente el campo con el TextEncoder y modo HTML, podría codificar manualmente los corchetes como < y >, podría eliminar cualquier cosa dentro de etiquetas con StringReplacer y una expresión regular <.*><\/STRONG>, o podría cambiar la propiedad del servicio y dejar pasar los datos. Digamos que quiero esta última opción.<\/P>Necesito usar una llamada al API REST administrativa admin REST API call. La propiedad que necesito cambiar es xssPreventionInfo.<\/P>Para hacer esto, en tu navegador e iniciado sesión como propietario del servicio, ve a la sección Contenido en la aplicación Home y navega al ítem del servicio de entidades. En la parte inferior derecha hay un control que te permite Ver el API REST del ítem:<\/P>
<\/span><\/P>Ve allí en tu navegador (tu URL será diferente por supuesto).<\/P>https:\/\/services.arcgis.com\/FQD0rKU8X5sAQfh8\/arcgis\/rest\/services\/Get_It_Done_311_Requests\/FeatureServer?token=<yourtoken><\/A><\/P>Para acceder al API admin inserta la palabra 'admin' entre 'rest' y 'services':<\/P>
https:\/\/services.arcgis.com\/FQD0rKU8X5sAQfh8\/ArcGIS\/rest\/admin\/services\/Get_It_Done_311_Requests\/FeatureServer?token=<yourtoken><\/A><\/P>Luego, al final de la página ve al endpoint UpdateDefinition:<\/P>
https:\/\/services.arcgis.com\/FQD0rKU8X5sAQfh8\/ArcGIS\/rest\/admin\/services\/Get_It_Done_311_Requests\/FeatureServer\/updateDefinition?token=<yourtoken><\/A><\/P>Ahora busca la propiedad xssPreventionInfo, establece el valor para xssInputRule a sanitizeInvalid:<\/STRONG><\/P>
<\/span><\/P>Pulsa el botón Update Service Definition y verifica que se complete correctamente. ¡Ahora puedes escribir HTML y cosas como <somebody@hotmail.com> en tu servicio de entidades!<\/P>