我正在尝试一些我认为很简单的事情,当我与邮递员测试终点时,它可以很好地工作,但是当站点启动时,就是当我遇到“错误”时
这些是我当前的设置:
twilio==6.29.1
Django==2.0.7
djangorestframework==3.9.4
Python 3.6.8
使用twilio发送短信后:
client = Client(key1,key2)
message = client.api.account.messages.create(
body= request.data["Body"],
to= request.data["toNumber"],
status_callback='https://myurl',
from_= request.data["fromNumber"]
)
我已经设置了回叫
class SMSCallBack(APIView):
parser_classes = (JSONParser,)
def post(self, request, format=None):
print(request.GET)
print(request.GET.getlist('SmsSid'))
return Response({'xxx': 'xxx'})
但这是我在日志中的答复
<QueryDict: {}>
[]
如果我尝试在邮递员中做同样的事情,我会得到
<QueryDict: {'SmsSid': ['asd']}>
['asd']
现在我想和邮递员一起猜测一下,我已经正确设置了它(POST,并在params选项卡中添加了一个值),因为来自twilio的控制台日志表明它们发送的多个参数之一是SmsSid
我对Django和python还是很陌生,所以在尝试获取传入参数时可能缺少某些东西吗?
当我尝试
request.POST.getlist('SmsSid')
我的结果是:
2019-07-15T05:15:25.735240+00:00 app[web.1]: 10.65.77.132 - - [15/Jul/2019:05:15:25 +0000] "POST /XXXX/smscallback/ HTTP/1.1" 415 100 "-" "TwilioProxy/1.1"
2019-07-15T05:15:25.738919+00:00 heroku[router]: at=info method=POST path="/XXXX/smscallback/" host=XXX.com request_id=3c5b81c2-003b-461a-8bd9-3e79d4545a9a fwd="3.94.8.12" dyno=web.1 connect=1ms service=783ms status=415 bytes=346 protocol=https
当我尝试邮递员时,我会得到
[]
答案 0 :(得分:3)
这里是Twilio开发人员的传播者。
Twilio将向您的statusCallback端点发出POST请求。因此,数据将位于请求正文中的request.POST
下,而不是request.GET
下。
您的代码还显示您正在使用JSONParser
解析传入的请求。 Twilio将请求发送为application/x-www-form-urlencoded
,因此您应该使用FormParser
。
让我知道是否有帮助。