Meu processo ArcGIS Data Interoperability ETL estava indo bem, mas de repente o escritor do ArcGIS Online Feature Service lançou um erro que terminou meu workspace, a mensagem de erro parecia assim:<\/P>
O código de erro do servidor foi '400' e a mensagem foi: ''. Detalhes: 'O campo public_description tem conteúdo html inválido.<\/FONT><\/P>Os dados são de um site 311 do governo local - o campo public_description é onde o público capturou os detalhes da solicitação de serviço. Como o HTML entrou ali? O que havia de inválido nisso? Como posso reforçar minha tradução para capturar esse tipo de coisa? <\/P>Após muita investigação e anotando para mim mesmo trazer o tratamento de rejeição do writer com a Safe novamente, encontrei os dados ofensores. A investigação me lembrou da aula de matemática quando trabalhamos o método regula falsi de Isaac Newton, ativando cache e usando dois transformadores Sampler para delimitar o culpado até encontrá-lo. Nem era HTML, era um email entre colchetes: <somebody@hotmail.com><\/STRONG>.<\/P>OK, pensei, é razoável colocar um email em um campo de texto livre. Por que o serviço de feição é tão exigente com isso? <\/P>Acontece que os serviços de feição têm uma configuração (ativada por padrão) para bloquear conteúdo potencialmente prejudicial. Tenho algumas opções. Se meus dados realmente tivessem conteúdo HTML, eu poderia codificar o campo em porcentagem com o TextEncoder no modo HTML, poderia codificar manualmente os colchetes como < e >, poderia remover qualquer coisa dentro das tags com StringReplacer e uma expressão regular <.*><\/STRONG>, ou poderia alterar a propriedade do serviço e deixar os dados passarem. Digamos que eu queira essa última opção.<\/P>Preciso usar uma chamada da API REST administrativa admin REST API call. A propriedade que preciso alterar é xssPreventionInfo.<\/P>Para fazer isso, no seu navegador e logado como proprietário do serviço, vá para a seção Conteúdo no aplicativo Home e navegue até o item do serviço de feição. No canto inferior direito há um controle que permite Visualizar a API REST do item:<\/P>
<\/span><\/P>Vá até lá no seu navegador (sua URL será obviamente diferente).<\/P>https:\/\/services.arcgis.com\/FQD0rKU8X5sAQfh8\/arcgis\/rest\/services\/Get_It_Done_311_Requests\/FeatureServer?token=<yourtoken><\/A><\/P>Para acessar a API administrativa insira a palavra 'admin' entre 'rest' e 'services':<\/P>
https:\/\/services.arcgis.com\/FQD0rKU8X5sAQfh8\/ArcGIS\/rest\/admin\/services\/Get_It_Done_311_Requests\/FeatureServer?token=<yourtoken><\/A><\/P>Então, na parte inferior da página vá para o endpoint UpdateDefinition:<\/P>
https:\/\/services.arcgis.com\/FQD0rKU8X5sAQfh8\/ArcGIS\/rest\/admin\/services\/Get_It_Done_311_Requests\/FeatureServer\/updateDefinition?token=<yourtoken><\/A><\/P>Agora procure pela propriedade xssPreventionInfo, defina o valor para xssInputRule como sanitizeInvalid:<\/STRONG><\/P>
<\/span><\/P>Clique no botão Update Service Definition e verifique se conclui OK. Agora você pode escrever HTML e coisas como <somebody@hotmail.com> no seu serviço de feição!<\/P>