1

我在 ESP8266 上运行 MicroPython。该代码应向 Twilio 的 restAPI 发送 SMS HTTP POST 请求。我试图让它与 urequests 一起工作。但我不断收到 401 UNAUTHORIZED 回复。请一些建议。编码:

import urequests

def send_sms():
    twilio_account_sid = "{AcctSID}"
    twilio_auth_token = "{AuthToken}"
    from_phn_nbr = "+{FromPhoneNbr}"
    to_phn_nbr = "+{ToPhoneNbr"))

    twilio_proto = "https://"
    twilio_host = "api.twilio.com"
    twilio_path = "/2010-04-01/Accounts/{AcctSID}/Messages"
    twilio_url = twilio_proto + twilio_host + twilio_path
    twilio_data = "'From': '{from_phn_nbr}', \
                  'To': '{to_phn_nbr}', \
                   'Body': 'Hai'"

    twilio_headers = {
        'Authorization': 'Basic {AcctSID}:{AuthToken}',
        'Content-Type': 'application/x-www-form-urlencoded',
        'WWW - Authenticate': 'Basic realm = "Twilio API'
    }

    try:
        resp = urequests.post(url=twilio_url, 
                                  data=twilio_data, 
                                  headers=twilio_headers)
        print(resp.status_code, resp.reason)

    except Exception as exc:
        print("\nException occured.")
        sys.print_exceptin(exc)
4

2 回答 2

2

Twilio 开发人员布道者在这里。

我不知道这个urequests库,但是当使用 HTTP 基本身份验证时,仅仅连接用户名、冒号和密码是不够的。您还需要对连接的字符串进行 base 64 编码

这就是我从您的实施中所能想到的。让我知道它是否有帮助。

于 2017-04-03T23:10:06.963 回答
0

@dentex

使用邮递员:

  • 填写标签验证

在此处输入图像描述

  • 转到标签页眉
  • 复制“授权”值

在此处输入图像描述

过去的“授权”值到您的代码中,如下所示:

twilio_headers = {
'Authorization': 'Basic QUMxMmZhNzFlYzU5MzZkNzYyMDYzNWM2Njg1NzNlZWNkNDo2OTBiY2Q5OTA2MDc3NmIzYmQ0NzgwOGE5ZTc2NmM5Yg==',
'Content-Type': 'application/x-www-form-urlencoded',
'WWW-Authenticate': 'Basic realm = Twilio API'

}

于 2017-11-03T17:26:04.237 回答