Python HTTPS Post报错找不到现有URL,嵌入式PC JSON RPC通信故障
问题分析与排查建议
咱们先把你的问题梳理清楚:
- 你正在开发一个项目,需要向局域网内支持JSON RPC的嵌入式PC发送JSON对象,设备IP可正常访问
- 两周前代码运行完全正常,但今天继续开发时突然失效
- 开发环境用的是Visual Studio 2017,已经尝试过Python 3.4(64位)、Python 3.6(64/32位)多个版本
你提供的代码片段如下(看起来没写完哦):
import json import urllib3 import sys import base64 import os import io import base64 import hashlib from base64 ...
接下来给你几个实用的排查方向,咱们一步步来:
- 先查网络基础连通性:先确认嵌入式PC的IP地址没变动,用命令行敲
ping [设备IP]测试局域网能不能通;再用Postman或者浏览器直接调用设备的JSON RPC接口,看看能不能拿到正常返回——如果网络层面就不通,那代码肯定跑不起来 - 检查代码与依赖变化:最近有没有改动过代码?比如接口地址、请求头、base64加密的认证信息有没有写错?另外看看urllib3这类依赖包是不是自动更新了——老版本Python对新依赖包兼容性可能有问题,你可以试试重新安装指定版本的urllib3,比如
pip install urllib3==1.26.6,这个版本对Python3.4/3.6都比较友好 - 验证JSON RPC请求格式:JSON RPC有严格的格式规范,必须包含
jsonrpc: "2.0"、method、params、id这些核心字段,检查你构造的JSON对象是不是符合要求,有没有拼写错误(比如把jsonrpc写成json-rpc这种低级错误) - 排查权限与防火墙问题:看看嵌入式PC是不是开了防火墙,把你的请求拦截了?或者设备的认证策略有没有更新?比如之前不需要账号密码,现在加了验证,你的代码里有没有同步调整?
- 排除IDE环境问题:试试在VS2017之外,用命令行直接运行你的Python代码——有时候VS的虚拟环境配置会出问题,命令行运行能快速排查是不是IDE的锅
内容的提问来源于stack exchange,提问作者JWo
相关产品推荐
相关产品推荐

