Questão nº 53
Questão de Tecnologia da Informação · FGV TJ-SE Servidor 2023 (nº 53)
Maria está criando uma página em seu site para o cadastro de clientes, onde a busca pelo CEP preencherá automaticamente parte dos dados do endereço.
Considerando que o serviço de busca é oferecido por um Web Service SOAP, e que Maria irá utilizar XMLHttpRequest, no código Java Script, a função de callback para a consulta deve:
- Aconfirmar a recepção bem-sucedida, com status 500, utilizar o atributo responseText, transformado para um objeto com JSON.parse, e obter os dados nos atributos do objeto;
- Bverificar se a recepção foi concluída, com readyState valendo 0 e status 304, e utilizar o atributo response da resposta, com uso de JSON.stringify para obtenção dos dados;
- Cverificar se a recepção foi concluída, com readyState valendo 3 e status 404, utilizar o atributo responseXML, transformado para objeto com JSON.parse, e obter os dados do objeto;
- Dconfirmar a recepção bem-sucedida, com status 304, utilizar o atributo responseText da resposta, e obter os dados através dos métodos de DOMParser;
- Everificar se a recepção foi concluída, com readyState valendo 4 e status 200, e utilizar o atributo responseXML da resposta, com a obtenção dos dados pelos métodos de DOMParser. (alternativa correta)
Resposta comentada
Gabarito Alternativa E
O conceito-chave aqui é como lidar com uma requisição AJAX (JavaScript e XML Assíncronos) usando XMLHttpRequest para um serviço SOAP (que usa XML) no navegador. Para uma requisição bem-sucedida, precisamos verificar o estado de conclusão e o código de sucesso, e então acessar o conteúdo da resposta no formato correto (XML) para extrair as informações.
- (A) Incorreta: O
status 500indica um erro interno do servidor, não uma recepção bem-sucedida. Além disso, serviços SOAP retornam XML, não JSON, entãoJSON.parseestaria incorreto. - (B) Incorreta:
readyStatevalendo0significa que a requisição nem sequer foi enviada. Ostatus 304indica "Não Modificado", eJSON.stringifyé usado para converter um objeto JavaScript em uma string JSON, não para obter dados de uma resposta XML. - (C) Incorreta:
readyStatevalendo3significa que a requisição está "carregando", não concluída. Ostatus 404indica "Não Encontrado", não um sucesso. EJSON.parsenão é usado para XML. - (D) Incorreta: O
status 304("Não Modificado") não é o código de sucesso esperado para uma busca de novos dados (o usual é200 OK). EmboraDOMParserseja relevante para XML, usarresponseTextexigiria que você parseasse a string XML manualmente, enquantoresponseXMLjá fornece o XML como um objeto DOM. Armadilha da banca: Esta alternativa é tentadora porque mencionaDOMParser, que é o mecanismo para trabalhar com XML. No entanto, ostatus 304e a preferência porresponseXML(que já é um objeto DOM) sobreresponseText(que é uma string) a tornam incorreta para a situação de sucesso e eficiência. - (E) Correta: Para uma requisição bem-sucedida e concluída, o
readyStatedeve ser4(DONE) e ostatusdeve ser200(OK). Como o serviço é SOAP (baseado em XML), a resposta será XML, e o atributoresponseXMLdo XMLHttpRequest já fornece essa resposta como um objetoDocument(DOM). A obtenção dos dados se dá, então, utilizando os métodos padrão de navegação e manipulação do DOM (comogetElementsByTagName,querySelector,textContent, etc.) sobre esse objetoresponseXML.
Fonte: FGV TJ-SE Servidor 2023 Analista Judiciário - Análise de Sistemas - Web Designer (Caderno Tipo 1). Reproduzida para fins de estudo.