gpt4 book ai didi

python - 通过 curl/urllib2 将 json 数据发送到 Pyramid 应用程序没有给出正确的请求。POST

转载 作者:行者123 更新时间:2023-11-28 22:53:51 24 4
gpt4 key购买 nike

我目前正在测试创建一个 RESTful json API,在此过程中,我一直在测试通过 curl 发布数据,主要是为了看看我是否可以通过请求登录。即使我破解它,我也不知道该怎么做,但这是一个单独的问题。

我正在向我的应用发送以下 POST 请求:

curl -X POST http://localhost:6543/users/signin -d '{"username":"a@a.com","password":"password"}' 

当我看到我的请求中有什么数据时,输出非常奇怪:

ipdb> self.request.POST
MultiDict([('{"username":"a@a.com","password":"password"}', '******')])
ipdb> self.request.POST.keys()
['{"username":"a@a.com","password":"password"}']
ipdb> self.request.POST.values()
[u'']

所以,它是一个 MultiDict,以我的 json 对象作为字符串键,以一个空字符串作为它的值?!这似乎不对。

删除我的 json 声明中的单引号会得到以下内容:

ipdb> self.request.POST
MultiDict([('username:a@a.com', u'')])

有谁知道为什么我的数据可能没有正确发布?

更新:

需要说明的是,我使用的 header 实际上是 application/x-www-form-urlencoded。

ipdb> self.request.headers['CONTENT-TYPE']
'application/x-www-form-urlencoded'

我确实发现,出于某种原因,使用 requests当我执行以下操作时图书馆工作:

In [49]: s.post('http://localhost:6543/users/signin', data=[('username', 'a@a.com'), ('password', 'password')], headers={'content-type': 'application/x-www-form-urlencoded'})
Out[49]: <Response [200]>

尽管它不能像预期的那样与 curl 一起工作,但这一事实仍然令人不安。

最佳答案

我不确定您尝试上传的内容类型 - application/json 或 application/x-www-form-urlencoded。 request.POST 仅适用于后一个选项,request.json_body 用于解析来自 json 请求正文的数据。

明确地说,application/x-www-form-urlencoded 是您的网络浏览器提交表单时使用的格式。它是一种类似于 a=b&c=d&e=f 的键/值格式。从那里您可以期望 request.POST 包含一个字典,其中包含键 ace

关于python - 通过 curl/urllib2 将 json 数据发送到 Pyramid 应用程序没有给出正确的请求。POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18907898/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com