python webserver 别人访问_python调用基于soap 的webserver

Python 调用webservice服务

python 可以作为webservice的客户端以及服务端,本文主要是以讲述,python作为客户端怎么来调用 基于soap 的webservice

服务端可以参考:

本文的代码 是python3.X版本

前置条件

Python访问webservice接口用到的工具包是suds,但是由于该工具包没有在维护了,本文使用suds的分支项目suds-community

安装suds-community,pip install suds-community 博主测试过 suds-py3包  以及suds-jurko 这三个包都可以用

免费的webservice网站,http://www.webxml.com.cn/zh_cn/web_services.aspx。

准备好前置条件后

from suds.client importClient#连接到webservice服务,获取查询天气服务方法

client=Client('http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl')print(client)

#### 一定要注意URL后一定要加  ?wsdl

如果连接没问题,就可以直接调用webservice中的方法  , 详细的访问名以及调用的方法可以直接 URL中查看

调用方法如下:

#查询手机号码归属地

print(client.service.getMobileCodeInfo("18300000000",""))#18300000000:广东 深圳 广东移动全球通卡

经常会出现的问题集合

配置以下几点可以解决95%左右的问题:

示例常见的错误:

以下是常见的两种错误方式:

from suds.client import Client

from suds.xsd.doctor importImportDoctor, Importfrom suds.xsd importsxbasic sxbasic.Import.bind('http://www.w3.org/2001/XMLSchema', 'file:' + str(BASE_DIR) + '/runCIA/suds/XMLSchema.xml')

imp= Import('http://www.w3.org/2001/XMLSchema')

# 添加过滤空间

imp.filter.add('http://www.innolux.com/InnoLux/WebServices')

doctor=ImportDoctor(imp)

verification_url= 'http://xxxxxxxxxxx/xxxxxx/xxxxxxxx.asmx?wsdl'verification_client= Client(verification_url, doctor=doctor)

触发suds.TypeNotFound: Type not found: '(schema, http://www.w3.org/2001/XMLSchema, )错误,

错误的原因是没有正确的引入命名空间。

解决办法,用浏览器打开webservice服务链接(打开以上代码的URL 地址),找到webservice服务中的targetNamespace,

将它的只添加到过滤的命名空间就能解决问题。

但是一旦使用这个方法。速度会变得很慢, 解决速度变慢以下方式可以解决这个问题

触发 urllib.error.URLError:

是因为 本机寻找XMLSchema.xsd比较慢

1.下载http://www.w3.org/2001/XMLSchema.xsd和http://www.w3.org/2001/xml.xsd

分别保存为XMLSchema.xml 和 xml.xml (改文件后缀)放在本机项目中下

1.添加sxbasic.Import.bind

sxbasic.Import.bind('http://www.w3.org/2001/XMLSchema', 'file:文件目录地址/XMLSchema.xml')

2.在XMLSchema.xml的 91行

中schemaLocation 改为本地xml路径

demo:

注****** 代码中 BASE_DIR 是django 项目中配置的根目录

以上都配置后 %95 的webservice 都可以访问,还可能是内部网,也有可能是webserver 你无权访问,有其他问题可以私下联系博主  : 邮箱  suwhatsu@163.com

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,下面是Python基于Pymssql模块实现通讯录管理系统的教程。 1.安装Pymssql模块 ``` pip install pymssql ``` 2.创建数据库和表 首先需要在SQL Server中创建一个数据库,并且创建一个名为“contacts”的表,用于存储联系人的信息。 ```sql CREATE DATABASE ContactDB; GO USE ContactDB; GO CREATE TABLE contacts ( id INT PRIMARY KEY IDENTITY, name VARCHAR(50) NOT NULL, phone VARCHAR(50) NOT NULL, email VARCHAR(50) NOT NULL ); GO ``` 3.连接数据库并实现增删改查功能 ```python import pymssql class Contacts: def __init__(self, server, username, password, database): self.server = server self.username = username self.password = password self.database = database def connect(self): self.conn = pymssql.connect(server=self.server, user=self.username, password=self.password, database=self.database) def add_contact(self, name, phone, email): self.connect() cursor = self.conn.cursor() sql = "INSERT INTO contacts (name, phone, email) VALUES (%s, %s, %s)" cursor.execute(sql, (name, phone, email)) self.conn.commit() self.conn.close() def get_contacts(self): self.connect() cursor = self.conn.cursor() sql = "SELECT * FROM contacts" cursor.execute(sql) rows = cursor.fetchall() self.conn.close() return rows def update_contact(self, id, name, phone, email): self.connect() cursor = self.conn.cursor() sql = "UPDATE contacts SET name=%s, phone=%s, email=%s WHERE id=%s" cursor.execute(sql, (name, phone, email, id)) self.conn.commit() self.conn.close() def delete_contact(self, id): self.connect() cursor = self.conn.cursor() sql = "DELETE FROM contacts WHERE id=%s" cursor.execute(sql, (id,)) self.conn.commit() self.conn.close() ``` 4.编写用户交互界面 ```python def main(): contacts = Contacts(server='localhost', username='sa', password='password', database='ContactDB') while True: print("1. 添加联系人") print("2. 查看联系人") print("3. 修改联系人") print("4. 删除联系人") print("5. 退出") choice = input("请输入要执行的操作:") if choice == '1': name = input("请输入姓名:") phone = input("请输入电话:") email = input("请输入邮箱:") contacts.add_contact(name, phone, email) print("联系人添加成功!\n") elif choice == '2': rows = contacts.get_contacts() print("所有联系人:") for row in rows: print(row) elif choice == '3': id = input("请输入要修改的联系人ID:") name = input("请输入姓名:") phone = input("请输入电话:") email = input("请输入邮箱:") contacts.update_contact(id, name, phone, email) print("联系人修改成功!\n") elif choice == '4': id = input("请输入要删除的联系人ID:") contacts.delete_contact(id) print("联系人删除成功!\n") elif choice == '5': exit() else: print("请输入正确的操作!\n") if __name__ == '__main__': main() ``` 以上就是Python基于Pymssql模块实现通讯录管理系统的教程,希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

游泳馆的岛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值