• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

zichev

Como utilizar web service

15 mensagens neste tópico

Boas,

Sou um iniciante em python, e de momento preciso de aceder aos seguintes serviços disponibilizados pelo webservice que se pode encontrar aqui

http://cmap.ihmc.us/xml/CmapWebService.html

O meu codigo é este

import SOAPpy

server = WSDL.Proxy('http://cmapskea.ihmc.us/services/CmapWebService.wsdl')
callinfo = server.methods.keys()
for arg in callinfo:
  print arg

Já tentei de várias formas, mas só tive resultado com o webservice do Google, mas o que precisava mesmo era dos serviços deste.

Se alguém conseguir ligar ao webservice, que me diga como o fazer :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Afixa aí o output ou o trace. O que é que te acontece? dá-te erro?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O que aparece é qualquer coisa como a impossivel ler da wsdlsource, o que me parece o ficheiro não existe.

Como sou novo nesta area e em python, n sei se haverá outras formas de aceder a esse webservice, estou a precisar de uma ajudazita daqui do pessoal.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

onde tens

import SOAPpy

tens que ter

from SOAPpy import WSDL

Depois, o teu WSDL não existe :cheesygrin: Se tentares aceder dá erro 404!!

O link que deves usar é: http://cmap.ihmc.us/xml/CmapWebService.wsdl

Ainda assim, dá erro sim senhor. A mim o erro que dá é:

>>> server = WSDL.Proxy(wsdl)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/var/lib/python-support/python2.5/SOAPpy/WSDL.py", line 67, in __init__
    self.wsdl = reader.loadFromString(str(wsdlsource))
  File "/var/lib/python-support/python2.5/SOAPpy/wstools/WSDLTools.py", line 47, in loadFromString
    return self.loadFromStream(StringIO(data))
  File "/var/lib/python-support/python2.5/SOAPpy/wstools/WSDLTools.py", line 34, in loadFromStream
    wsdl.load(document)
  File "/var/lib/python-support/python2.5/SOAPpy/wstools/WSDLTools.py", line 260, in load
    schema = reader.loadFromNode(WSDLToolsAdapter(self), item)
  File "/var/lib/python-support/python2.5/SOAPpy/wstools/XMLSchema.py", line 80, in loadFromNode
    schema.load(reader)
  File "/var/lib/python-support/python2.5/SOAPpy/wstools/XMLSchema.py", line 1088, in load
    self.addImportSchema(tp.getSchema())
  File "/var/lib/python-support/python2.5/SOAPpy/wstools/XMLSchema.py", line 1205, in getSchema
    self._schema = reader.loadFromURL(url)
  File "/var/lib/python-support/python2.5/SOAPpy/wstools/XMLSchema.py", line 114, in loadFromURL
    schema.load(reader)
  File "/var/lib/python-support/python2.5/SOAPpy/wstools/XMLSchema.py", line 1088, in load
    self.addImportSchema(tp.getSchema())
  File "/var/lib/python-support/python2.5/SOAPpy/wstools/XMLSchema.py", line 1205, in getSchema
    self._schema = reader.loadFromURL(url)
  File "/var/lib/python-support/python2.5/SOAPpy/wstools/XMLSchema.py", line 114, in loadFromURL
    schema.load(reader)
  File "/var/lib/python-support/python2.5/SOAPpy/wstools/XMLSchema.py", line 1116, in load
    tp.fromDom(node)
  File "/var/lib/python-support/python2.5/SOAPpy/wstools/XMLSchema.py", line 2268, in fromDom
    self.content.fromDom(contents[indx])
  File "/var/lib/python-support/python2.5/SOAPpy/wstools/XMLSchema.py", line 2329, in fromDom
    self.derivation.fromDom(i)
  File "/var/lib/python-support/python2.5/SOAPpy/wstools/XMLSchema.py", line 2597, in fromDom
    self.content.append(LocalSimpleType(self))
NameError: global name 'LocalSimpleType' is not defined

Com o ZSI, outro módulo para lidar com webservices, também me deu erro. Talvez seja melhores contactares a malta do site para eles verem se não têm um bugzito no WSDL.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Gostaria de saber se existe outra forma de aceder a este webservice em python sem ter de utilizar o ficheiro .wsdl

Com o modulo ZSI ja tentei com o binding mas não estou a ter sucesso...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

SOAP é uma coisa que está associada à microsoft pelo que leva com um ruido brutal em seu redor. Não faço ideia por que motivo se chama ''web service" a um inerface SOAP (o que é que tem de diferente dos outros formatos de RPC?) ou para que serve o ficheiro .wsdl.

Aquilo que te posso dizer, não sei se ajuda muito, é isto:

Os ditos 'webservices' pelo que sei são simplesmente interfaces XML que funcionam sobre HTTP. O que é que isto quer dizer? Quer dizer que tudo o que fazem é responder a pedidos HTTP cujo conteudo vem embrulhado  segundo uma especificação particular em XML.

Posto isto, o que eu fazia, uma vez que parece haver problemas, é testar o interface manualmente usanto por exemplo o netcat, e ver o que se passa de facto. Terás é que escrever os cabeçalhos do HTTP manualmente, mas tambem não é nenhuma ciencia esotérica. Se quiseres podes usar o meu magnifico interface grafico para sockets para fazer os pedidos se te fizer menos confusão :cheesygrin:

http://www.portugal-a-programar.pt/index.php?showtopic=23021

Realmente está a dar 404, não sei se estou confundido, mas ia jurar que ontem esse endereço estava a responder bem.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ah, claro :P VÊ o meu post, o link está errado. troca aí services por xml e funciona :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Parece que tenho de utilizar primeiro um tal protocol UDDI para descobrir os serviços, e só depois poderei aceder

ao webservice, pelo menos foi o que percebi.

Alguém sabe trabalhar com UDDI para descobrir os serviços? nem que seja noutra linguagens, para ver se consigo passar isso

para python.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se ler o tutotial para c# http://cmap.ihmc.us/xml/ClientNet.html, podem ver que é adicionada uma web reference

http://cmap.ihmc.us/xml/CmapTools.disco , este ficheiro é para descobrir os serviços e só depois os posso utilizar, eu queria saber

como faço isso com o python, ja procurei por muita coisa mas até agora nada.

A pergunta agora é como faço em python para descobrir os serviços, depois é só utilizar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu com Python sempre usei os WSDLs e depois tinha acesso aos serviços... e não foi um ou dois :x O problema que dá aí é um problema de algo estar mal definido, ora vê o meu erro. Volto a insistir, manda um mail aos gajos com o erro e vê o que eles respondem.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Descobri que não sou o único a ter problemas em ter acesso a web services com o python http://raimondas.livejournal.com/5574.html. Gostava de saber se alguém tentou com outra linguagem aceder ao web service e que resultados obteve. Será que alguém conseguiu...ou o c# torna-se mais simples para este tipo de web service, já que detecta os serviços no seu discovery de UDDI.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora