调用腾讯云api失败,http报错

Viewed 58

重现步骤

import os
import urequests
import network
import time
import ujson
from machine import FPIOA
from machine import Pin

fpioa = FPIOA()
fpioa.set_function(62,FPIOA.GPIO62)
fpioa.set_function(20,FPIOA.GPIO20)
fpioa.set_function(63,FPIOA.GPIO63)
fpioa.set_function(53,FPIOA.GPIO53)

LED_R = Pin(62, Pin.OUT, pull=Pin.PULL_NONE, drive=7)  # 红灯
LED_G = Pin(20, Pin.OUT, pull=Pin.PULL_NONE, drive=7)  # 绿灯
LED_B = Pin(63, Pin.OUT, pull=Pin.PULL_NONE, drive=7)

LED_R.high()
LED_G.high()
LED_B.high()

button = Pin(53, Pin.IN, Pin.PULL_DOWN)






# Wi-Fi 配置
ssid_id = ""  
ssid_key = ""  
wlan = network.WLAN(network.STA_IF)
if (wlan.isconnected()==False):
    wlan.connect(ssid_id, ssid_key)


while not wlan.isconnected():
    print("连接中...")
    time.sleep(1)

print("连接成功")
time.sleep(1)


api_key = ""  
base_url = "https://api.hunyuan.cloud.tencent.com/v1"  # 腾讯云混元 API 基础 URL
url = f"{base_url}/chat/completions"  # 调用 completions 端点

# 请求体(Data)
data = {
    "Model": "hunyuan-turbo",
    "messages": [
        {
            "role": "user",
            "content": "can you hear me."  # 请求消息内容
        }
    ],

}

# 请求头(Headers)
headers = {
    "Version":"2023-09-01",
    "Action":"ChatCompletions",
    "Modle":"hunyuan-lite",
    "Authorization": f"Bearer {api_key}",  # 添加 API Key
    "Content-Type": "application/json",  # 请求内容格式为 JSON
    "Host": "api.hunyuan.cloud.tencent.com"
}

payload = ujson.dumps(data)


def send_request():
    try:
        # 发送 POST 请求,并使用 json 参数
        response = urequests.post(url, headers=headers, data=payload)

        # 检查响应状态并打印结果
        if response.status_code == 200:
            result = response.json()
            print("模型响应内容:", result['choices'][0]['message']['content'])
            response.close()
        else:
            print(f"请求失败,状态码: {response.status_code}, 错误信息: {response.text}")
            response.close()
    except Exception as e:
        print(f"请求发生错误: {e}")



press_flag = 0

while True:
    if button.value()==1:
        press_flag = 1

    if press_flag ==1:
        if button.value()==0:
            press_flag =0
            print("执行")
            send_request()

    # 简单延时,防止主循环过于频繁
    time.sleep_ms(10)


`期待结果和实际结果`
<!-- 你期待的结果是什么?实际看到的结果是什么? -->


`软硬件版本信息`
<!-- 硬件版本信息?软件版本信息? -->


`错误日志`
<!-- 是否有任何错误信息或日志?请附上相关内容。 -->
![](/uploads/post/5vHeq6RXPaj.png)

![](/uploads/post/5vHer9nw127.png)

![](/uploads/post/5vHerQLFqV7.png)
`尝试解决过程`
<!-- 你为解决这个问题尝试过哪些方法?请提供更多详细信息。 -->
应该是卡在了request.post上
返回的是“**请求发生错误: HTTP error: BadStatusLine:**”

`补充材料`
<!-- 请提供其他相关信息(如代码片段、配置文件、截图等)。 -->

还有就是,header和data不变的情况下,我用pycharm运行调用api函数,调用api成功

2 Answers

你好,方便贴一下完整的测试代码吗?

您好,已经补充了

可能是因为Micropython里的SSL库不完整导致的,我也遇到过这个问题,有些https的地址可以访问,有些则不行,会报错OSError 40 :(