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

paponi

Wsdl2py da erro - "index list out of range" ao tentar converter o wsdl do CMAPWS

15 mensagens neste tópico

Estou a fazer um projecto numa area que nunca tinha estudado.

É em python e envolve ligações a webservices.

Tenho que me ligar a um webservice e obter dados dele.

Começo por utilizar o comando wsdl2py ,o  problema é que ainda nao consegui sequer obter os dois ficheiros .py que vao ajudar a obter os metodos do WS.

O meu WebService é o CmapWebService, o ficheiro wsdl, encontra-se em :'http://cmap.ihmc.us/xml/CmapWebService.wsdl'.

Tento utilizar o comando wsdl2py e da-me um erro de ..."list index out of range.."

Sinceramente nao sei o que fazer, estou mesmo desesperado, ja vi o ficheiro linha a linha.

Se me puderem dar umas luzes agradecia muito

Cmpts

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

List index out of range indica que tás a tentar aceder a uma posição de uma lista que nem existe. Do tipo:

>>> x = [1,2,3]

>>> x[0]

1

>>> x[1]

2

>>> x[2]

3

>>> x[3]

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

IndexError: list index out of range

>>>

Cumps ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não sei nada sobre wsdl2py. O que te digo é que o que estás a correr está a tentar aceder a uma posição que não existe. Possivelmente não conseguiu fazer o que tu queres fazer.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O wsdl2py é uma função do modulo ZSI que pega no .wsdl de um web service e o transforma em dois ficheiros .py que depois podem ser utilizados para aceder ao métodos desse web service.

Wsdl quer dizer Web Service Description Language, ou seja, a descrição de um web service.

Eu quero aceder aos métodos do Web Service do Cmap, e eles disponibilizam o wsdl deles.

Queria transformar-lo nos tais dois ficheiros .py para aceder.

Existe outra maneira de aceder aos metodos ??

Cmpts

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mostra-me o código que usas, e um screenshot do erro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

maximum recursion depth exceded in cmp é o novo erro que me dá..

ao pesquisar encontrei uma forma de o resolver mas no meu caso nao.. :thumbsup:

Ou seja, para resolver este problema poe-se esta linha de codigo no inicio do ficheiro.. :

-> sys.setrecursionlimit(1500).. podendo alterar-se o 1500 , penso eu.

No meu caso, ao por sys.setrecursionlimit(8000) da-me outro erro...

O Famoso e aclamado : ... ->  Segmentation fault...

tou tramado ..

alguem me pode ajudar?

cmps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ao fazer o wsdl2py CmapWebService.wsdl cria tres ficheiros:

-CmapWebService_client.py

-CmapWebService_types.py

-CmapWebervice_server.py

O client faz um import do types e o server não interfere.

O ficheiro types é um bocado grande. Se quiseres envio-te.

Será do ficheiro ser muito grande e ter muitas classes?

Cmpts

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não quero ser rude, mas:

Tu percebes português ou quê?

Sem código não vamos a lugar nenhum.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o unico codigo que executo é :

from CmapWebService_client import *

da-me o tal segmentation fault.

os ficheiros sao um pouco grandes..

cmpts

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estás em Windows ou em Linux? Que versão do ZSI andas a usar?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ola

Ja teste no Fedora, no Windows xp, e em Mac... o erro é o mesmo..

tenho o python 2.5.1 , o ZSI 2.1.

cmpts

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Importas-te de colocar aqui o código que estás a usar para aceder ao webservice, bem como links para os respectivos wsdl?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O URL do WSDL é : http://www.ihmc.us/xml/CmapWebService.wsdl

Código:

Uso os comandos :

-> wsdl2py http://www.ihmc.us/xml/CmapWebService.wsdl

sao criados tres ficheiros:

CmapWebService_services.py

CmapWebService_types-py

CmapWebService_client.py

num ficheiro a parte .py faço :

from CmapWebService_client import *

e só com esta linha de código dá-me logo erro.

maximum recursion depth exceded in cmp

e depois de corrigir da-me segmentation fault

estou a tentar aceder através da ServiceProxy mas ainda sem sucesso.

ainda nao tenho codigo apenas aquela linha ... from CmapWebService_client import * que esta no ficheiro de ligacao mas que da logo erro

Quanto ao codigo que estou a fazer pela ServiceProxy:

from ZSI import ServiceProxy

service = ServiceProxy('http://www.ihmc.us/xml/CmapWebService.wsdl ')

value = service.getCmap('', 'This is a test!')

cmpts

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