如何在请求正文中使用JSON进行GET请求

用户名

我需要在GET请求中发送此JSON数组

{"user": "jähn", "id": 3}

我尝试使用

data = '{"user": "jähn", "id": 3}'
headers = {
    'Content-type': 'application/json',
    'Accept': 'text/plain'
}
request = urllib.request.Request(self.update_url, data=data,
    headers=headers, method='GET')
response = urllib.request.urlopen(request)

但是它失败了:TypeError:POST数据应该是字节或字节可迭代的。它不能是str类型。

我发现很奇怪的另一件事是,尽管我在Request to GET上设置了方法,但它告诉我有关POST数据的信息。

由于这是一个简单的脚本,因此我不希望使用像python-requests这样的库

马丁·彼得斯(Martijn Pieters)

您不能使用JSON编码的主体进行GET请求,因为GET请求仅由URL和标头组成。参数使用URL编码代替编码到URL中,没有选择将这些参数编码为JSON。

您可以使用urllib.parse.urlencode()函数创建URL编码的参数,然后使用附加到URL ?

from request.parse import urlencode

data = {"user": "jähn", "id": 3}  # note, a Python dictionary, not a JSON string
parameters = urlencode(data)
response = urllib.request.urlopen('?'.join((self.update_url, parameters)))

不要使用该data参数;使用该关键字参数将强制请求使用POST方法:

数据必须是bytes指定要发送到服务器的其他数据对象,或者None如果不需要这些数据。当前,HTTP请求是唯一使用数据的请求。提供data参数时,HTTP请求将是POST而不是GET。数据应为标准application / x-www-form-urlencoded格式的缓冲区

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在请求正文中发送原始 json

如何在JSON请求正文中使用php变量?

如何使用Java在请求正文中使用xml创建多部分/混合请求?

如何使用HttpURLConnection在请求正文中发送数据?

如何在 Rest Assured 的 GET 请求正文中传递 JSON?

使用jQuery $ .ajax()时如何使用GET在请求正文中发送数据

如何在请求中使用代理

如何配置viewsets.ModelViewSet以使用在请求正文中传递的参数进行过滤。(Django Rest框架)

在Spring中保存实体,并在请求正文中使用列引用子实体

管道 -> 运行 -> 运行管道如何在请求正文中提供管道资源

Node.js + express 如何在请求正文中添加字符串?

使用HttpURLConnection类在请求正文中发送数据

如何在Qt中使用JSON正文发送POST请求

如何通过邮递员以JSON格式在请求正文中发送对象数组?

Groovy/Jenkins - 如何在 http 请求正文中使用 for 循环

如何在Android中使用Volley在POST请求的正文中传递数组

在请求正文中验证日期

在请求正文中获取整数

在请求正文中获取空值

如何在邮递员测试正文中的另一个请求测试正文中使用来自一个请求的变量?

如何在请求中使用OkHttp的HttpUrl?

Python:如何在请求中使用Chrome Cookie

为什么Oauth2.0说“不建议在请求正文中使用客户端密码”?

在GET请求中使用正文

Rails的活动资源:如何在请求正文中而不是查询字符串中发送post参数?

Ajax HTTP请求使用请求正文中的数组更改JSON

如何在Postman中使用参数和正文进行发布请求

在请求请求的正文中使用带有多部分数据的齐射将图像上传到服务器

jQuery在请求正文中发布有效的json