我向RASA聊天机器人发送一个POST命令,其中包含一条消息。我的请求看起来像这样
import requests
import json
jsonbody = '{"message": "Wann ist der nächste Feiertag?"}'
r = requests.post('http://localhost:5005/webhooks/rest/webhook', data=jsonbody,
headers={'content-type': 'application/json'})
js = r.text
rep = json.loads(js)
我在运行rep = json.loads(js)
时得到raise JSONDecodeError("Expecting value", s, err.value) from None
。在
经过进一步的调查,我发现我从POST请求中得到了一个Response 400
。在
我尝试了几件事,例如我把德语ä
改成{
'[{"recipient_id":"default","text":"Der n\\u00e4chste Feiertag ist Tag der Deutschen Einheit am Donnerstag den 03.10.2019"}]'
在我打印列表print(rep)
之后,我得到了最后一条消息。在
所以这里的问题是德语元音变音在我的jsonbody中。虽然在我用ae
而不是结尾的ä
发送一个请求后,它们将显示为propper。我已经试过在我的请求中设置一个字符集了
r = requests.post('http://localhost:5005/webhooks/rest/webhook', data=jsonbody,
headers={'content-type': 'application/json; charset=unicode'})
但在执行之后,我再次收到响应400错误。在
我将conda4.6.2与python3.6.6一起使用。我认为Python3可以处理像德语元音变音符这样的特殊字符。在
有什么建议可以在POST请求中允许德语元音变化?在
我怀疑接受您请求的服务器不知道如何解析这个字符串。尽管我认为您的字符串是有效的JSON(因为https://www.json.org/表示字符串可能包含Unicode字符),但服务器的JSON解析器可能只接受ASCII数据。如果使用JSON的
^{pr2}$\uXXXX
unicode转义序列编码ä可能会有更好的运气。您可以使用json.dumps
来转义数据中的所有非ASCII字符。在我正努力解决这个问题,但是在通过请求发送数据之前设置encode解决了这个问题:
在我的例子中,编码是utf-8,这个函数encode()的默认值。在
相关问题 更多 >
编程相关推荐