Python调用StockTwits API上传本地图片发布图表报错如何解决
问题原因
你遇到的422错误是因为直接将本地文件路径传给了chart参数,StockTwits API会默认把该参数值当做网络URL校验,自然无法识别本地路径。
解决方法
StockTwits的消息创建接口支持两种传图方式,任选一种即可:
方式1:直接上传本地图片
通过multipart/form-data格式提交请求,将本地图片以二进制文件流的形式上传,代码示例如下:
import requests # 基础配置 mytoken = "你的实际授权令牌" image_path = "本地图片的完整路径,例如./trade_chart.png" api_url = "https://api.stocktwits.com/api/2/messages/create.json" # 普通请求参数 payload = { "access_token": mytoken, "body": "test", "sentiment": "bullish" } # 读取本地图片为二进制流 with open(image_path, "rb") as img_file: files = {"chart": img_file} # 发送请求,requests会自动设置multipart/form-data请求头 response = requests.post(api_url, data=payload, files=files) # 打印返回结果校验 print(response.json())
方式2:传公网可访问的图片URL
如果你的图片已经上传到公网图床,能直接通过HTTP/HTTPS链接访问,不需要额外上传文件,直接把URL赋值给chart参数即可:
import requests mytoken = "你的实际授权令牌" chart_public_url = "你的图片公网URL,例如https://xxx.com/chart.png" api_url = "https://api.stocktwits.com/api/2/messages/create.json" payload = { "access_token": mytoken, "body": "test", "sentiment": "bullish", "chart": chart_public_url } response = requests.post(api_url, data=payload) print(response.json())
注意事项
- 图片仅支持JPG、PNG格式,单张大小不可超过3MB
- 上传成功后会返回状态码200,响应体中包含生成的消息完整信息
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

