Erro: Expected a string but was BEGIN_OBJECT at line 1 column 2
-
O erro Expected a string but was BEGIN_OBJECT at line 1 column 2 ocorreu durante a realização de uma request dentro de um sistema Grails 2.5.6.
Código de execução da request:
RestResponse response = new RestBuilder().post("http://...") { body(form) }Como resposta esperava-se um application/json que posteriormente seria avaliado para decidir o sucesso ou fracasso do fluxo.
Ao pesquisar este problema foi descoberto que o RestResponse disponível no Grails 2.3.11 consegue resolver automaticamente o tipo de body enviado na requisição como também o tipo de conteúdo da response. Porém, no Grails 2.5.6 isso pode não ocorrer automaticamente, ocasionando o erro. Sendo assim, foi necessário adicionar duas propriedades para que as coisas voltassem a funcionar como esperado:
RestResponse response = new RestBuilder().post("http://...") { body(form) contentType 'multipart/form-data;' accept JSONObject }contentType : recebe o tipo de body a ser enviado na requisição
accept: indica o tipo de dado aceito no responseAbaixo estão os links pesquisados até chegar nessa solução, para caso alguém mais passe por esse problema e a solução acima não resolva a situação:
https://github.com/grails-plugins/grails-rest-client-builder/issues/40 -> neste foi encontrado a solução acima
https://stackoverflow.com/questions/41649731/gson-expected-a-string-but-was-begin-object
https://stackoverflow.com/questions/28418662/expected-begin-object-but-was-string-at-line-1-column-1