从VBA到烧瓶的HTTP请求编码问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从VBA到烧瓶的HTTP请求编码问题相关的知识,希望对你有一定的参考价值。

我正在从VBA发出POST请求,其中包含一些来自Cell(1,1)的西里尔字符到我的烧瓶应用程序,如下所示:

Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
URL = "http://127.0.0.1:5000/lineList?line=" & Cells(1, 1).Value
objHTTP.Open "POST", URL, False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
objHTTP.send ("")

在烧瓶中我尝试输出以下参数:

    def post(self):
        args = parser.parse_args()
        print(args)
        return "ok",200

但后来我得到了类似的东西

{'line': 'Ðx90Ñx80гÑx83менÑx82'}

并在python控制台中

127.0.0.1 - - [14/Apr/2019 17:10:31] "POST /lineList?line=ÐÑгÑÐ¼ÐµÐ½Ñ HTTP/1.1" 200 -

看起来像一些编码问题,但我无法弄清楚。任何帮助表示赞赏。

答案

尝试为西里尔语定义字符集,尝试其中一些:

charset=iso-8859-5
charset=koi8-r
charset=windows-1251

e.g:

objHTTP.setRequestHeader "Content-type", "application/x-www-form-urlencoded", "charset=ISO-8859-1"

以上是关于从VBA到烧瓶的HTTP请求编码问题的主要内容,如果未能解决你的问题,请参考以下文章

烧瓶上的 HTTP 摘要身份验证对我不起作用

烧瓶上的POST请求失败[重复]

我无法将发布请求从反应表单发送到烧瓶服务器 [重复]

如何使用 VBA 从 Excel 向服务器发送 HTTP POST 请求?

如何在不使用请求的情况下直接从代码调用烧瓶端点

从请求中检索帖子数据的烧瓶速度很慢?