Python连接外部WebSocket报错:TypeError: an integer is required (got type str)
解决WebSocket发送消息时的TypeError: an integer is required错误
你遇到的错误是因为websocket库的send()方法仅支持字符串(或字节)类型的数据,但你直接传入了Python字典。浏览器发送WebSocket消息时,实际是把JSON对象序列化为字符串传输的,所以你需要在代码里做同样的转换。
修正方法很简单:
- 导入
json模块 - 使用
json.dumps()将字典格式的消息转换成JSON字符串后再发送
修正后的完整代码:
from websocket import create_connection import json link = "wss://sbapi.sbtech.com/bet777/sportscontent/sportsbook/v1/Websocket?jwt=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2NjA4MTU3OTUsImlzcyI6ImFnZW50X0JldDc3NyIsIlNpdGVJZCI6NzIsIklzQW5vbnltb3VzIjp0cnVlLCJTZXNzaW9uSWQiOiI4NmJjNmMzOS0wMmNkLTQyZDctOTg5OC03MjBhZGFhYmM5OGEiLCJuYmYiOjE2NjA4MDg1OTUsImlhdCI6MTY2MDgwODU5NX0.f9T1bPsuMNYETXUhy-K9rmdmdQ_p2lQIvJmFGsveZ2H2DeA6_-tEE_83oFgDqVihuFHBdTe69rXir2rgoKjWcJxMR49cD7fixpWhJ0s4JFfc2VQIscNaVzGO-q7EAPZlWpYJe91WOXM-kcaPPtRYpcZkjcy7_D6vuEZKdlRGD5kA0TKt7DGSsA1dNgdZ1Hvw0JwDMxcNKJ9LFnJjz4v2mFMwozVL79T6mQSTQwR4HFiid4vH6STIzZ_dejxp86PDe68mj_e7Vko4eGX3vl9ihYyqUXeVePI0Yqac9fysiHCrrYJ2Cs4Z4_fCi1CrW3Ft2VIXQkJ_6Ls8vD9crmtreA&locale=nl" message_to_send = {"jsonrpc": "2.0", "params": {"eventState": "Mixed", "eventTypes": ["Fixture", "AggregateFixture"], "ids": ["40815"], "regionIds": ["20"], "pagination": {"top": 100, "skip": 0}, "marketTypeRequests": [ {"sportIds": 1, "marketTypeIds": ["1_39", "2_39", "3_39", "1_169", "1707", "1_0", "2_0", "3_0"], "statement": "Include"}]}, "method": "GetEventsByLeagueId", "meta": {"blockId": "eventsWrapper-Center_LeagueViewResponsiveBlock_17829"}, "id": "e0621fd8-e7b0-4458-8aaf-d4a83b6e90a9"} ws = create_connection(link) # 将字典转为JSON字符串后发送 ws.send(json.dumps(message_to_send)) result = ws.recv() # 如果需要解析返回的结果,可以用json.loads()转换为字典 # parsed_result = json.loads(result) # print(parsed_result) print(result) ws.close()
如果后续需要处理服务器返回的JSON响应,可通过json.loads()把接收到的字符串转回Python字典,方便提取和使用数据。
内容的提问来源于stack exchange,提问作者Stef Renneboog
相关产品推荐
相关产品推荐

