Web Service Com Gson

Boa tarde,

alterei um código legado para retornar WebService tipo Json, e para isso usei o Gson.

acontece que junto dos dados nao vem somente no formato Json, mas com um XML envelope

<soapenv:Envelope>
<soapenv:Body><conectaResponse><ns1:conectaReturn>
[{"id":"100","descricao":"descricao"},{"id":"200","descricao":"outro"}]
</ns1:conectaReturn>
</conectaResponse></soapenv:Body></soapenv:Envelope>

Alguém sabe me dizer como faço para ir o resultado limpo:


[{"id":"100","descricao":"descricao"},{"id":"200","descricao":"outro"}]

Obrigado peczenyj

Cara isso se chama envelope SOAP

e vc precisa parsear o xml para encontrar esse json é pq tem algo bem errado.

teoricamente o que vc precisa é parsear o xml. o que não esta claro é o que vc esta fazendo.

SOAP: pesquise sobre isso. vai elucidar as suas dificuldades.

Isso é webservice SOAP, trabalha com XML e não com JSON…

Tinha um WS no modo XML, e agora eu preciso consumir esse WS em um APP IOS.

Usando um tutorial que usa um outro WS de exemplo funciona bacaninha, pois o conteudo desse é:

    {
      "cep": "01001-000",
      "logradouro": "Praça da Sé",
      "complemento": "lado ímpar",
      "bairro": "Sé",
      "localidade": "São Paulo",
      "uf": "SP",
      "unidade": "",
      "ibge": "3550308",
      "gia": "1004"
    }

Então eu mudei meu WS (XML) para o formato Json, mas não consigo consumi-lo no APP por conta do conteudo:

<soapenv:Envelope><soapenv:Body><conectaResponse><ns1:conectaReturn>
[{"id":"100","descricao":"descricao"},"id":"200","descricao":"outro"}]
</ns1:conectaReturn></conectaResponse></soapenv:Body></soapenv:Envelope>

E eu precisava que fosse assim

[{"id":"100","descricao":"descricao"},"id":"200","descricao":"outro"}]

obrigado peczenyj

então para mudar de forma rápida, de XML para Json eu li sobre a biblioteca Gson e mudei o retorno de seu conteudo:

new Gson().toJson(lista, List.class);

Mas pelo visto somente isso não é suficiente.

Obrigado igor_ks

@rodrigues_sis o que tu está fazendo é utilizar um serviço web (web service) com o protocolo SOAP. Ou seja, você está “envelopando” um JSON dentro de um XML. Isso me cheira a “gambiarra”. Se é muito arriscado deletar o serviço atual, mantenha ele como está e crie um novo e esse novo defina como RESTful. Aí sim, você vai trabalhar de forma coerente com JSON.

O que daria para fazer é seu objeto XML ter uma String e esta String armazenar o JSON. No seu cliente, vai ler essa String do XML e converter para um objeto desejado. Mas veja, vou repetir o que disse acima, isso é gambiarra. O correto é transformar em RESTful ou criar um novo, no formato RESTful.

Abraços.

Obrigado nel.

1 curtida

Você pode parsear XML no iOS.

pfk66, você tem algum exemplo no swift?

valeu