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.
igor_ks
Setembro 14, 2016, 1:02am
#3
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
nel
Setembro 14, 2016, 2:26pm
#6
@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.
pfk66
Setembro 14, 2016, 5:25pm
#8
Você pode parsear XML no iOS.
pfk66, você tem algum exemplo no swift?
valeu