可以使用python suds从文件系统读取wsdl文件吗?

42 投票
3 回答
23443 浏览
提问于 2025-04-16 06:15

根据suds的文档,如果我有一个WSDL的链接,就可以创建一个Client

from suds.client import Client
url = 'http://localhost:7080/webservices/WebServiceTestBean?wsdl'
client = Client(url)

我现在把WSDL文件保存在我的电脑上。请问能不能用suds直接从我的电脑读取这个WSDL文件,而不是把它放在网络服务器上呢?

3 个回答

2

使用pathlib:

from pathlib import Path
url = Path('resources/your_definition.wsdl').absolute().as_uri()
    
19

一行代码

# Python 3
import urllib, os 
url = urllib.parse.urljoin('file:', urllib.request.pathname2url(os.path.abspath("service.xml")))

这是一个更完整的一行代码,它可以:

  • 让你只需要指定本地路径,
  • 获取绝对路径,
  • 然后把它格式化成文件网址。

这个代码是基于:

  • 被接受答案中的评论,
  • 以及这个 链接
  • 特别感谢用户 Sebastian 提供的更新版 Python 3 实现,因为现在我们应该避免使用旧版 Python。

原始代码供参考

# Python 2 (Legacy Python)
import urlparse, urllib, os

url = urlparse.urljoin('file:', urllib.pathname2url(os.path.abspath("service.xml")))
59

试着使用 url='file:///path/to/file' 这个格式。

撰写回答