python - 发送 POST 请求的正文
问题描述
我检查了如何将请求发送到 Firefox 中的网站:
(不幸的是,我不得不将网站 URL 更改为假的,以防止服务器表单被请求过多)。
我尝试在 python 中执行此请求:
import requests
import json
seq = 'ATGGCAGACTCTATTGAGGTC'
url = 'http://www.test.com'
body = {'QUERY': seq}
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
r = requests.post(url, data=json.dumps(body), headers=headers)
print(r.text)
然而,当这样做时,网站说:Empty gene sequence passed for blast analysis. Please enter a valid gene sequence.
这意味着序列(即QUERY
)没有正确发送到服务器。我在这里想念什么?
(Ps 希望缺少该网站不是问题来回答这个问题,如果是请告诉我,也许我可以要求提及他们的网站)
解决方案
我猜您提交到该特定网站的字符串/序列是问题所在。我针对 POST 接受网站运行了您的示例代码:
import requests
import json
seq = 'ATGGCAGACTCTATTGAGGTC'
url = 'http://httpbin.org/post'
body = {'QUERY': seq}
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
r = requests.post(url, data=json.dumps(body), headers=headers)
print(r.text)
并得到了这个结果,它显示您的查询格式正确:
{
"args": {},
"data": "{\"QUERY\": \"ATGGCAGACTCTATTGAGGTC\"}",
"files": {},
"form": {},
"headers": {
"Accept": "text/plain",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "34",
"Content-Type": "application/json",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.22.0"
},
"json": {
"QUERY": "ATGGCAGACTCTATTGAGGTC"
},
"origin": "2.122.222.8, 2.122.222.8",
"url": "https://httpbin.org/post"
}
推荐阅读
- embedded - 使用带有 DMA 的 STM32L4 ADC 进行成像传感器读取
- java - 弹簧排除过滤器
- java - 如果元素等于数组列表中的下一个索引,如何编写一个跳过元素的for循环?
- gremlin-server - 通过 BulkLoaderVertexProgram 将非常大的图形加载到 gremlin 服务器中
- java - 如何在 Clojure 中使用 defrecord 来扩展 Java 类?
- mysql - FIND_IN_SET 等效于带有 IF 条件的 SQL Server
- django - NoReverseMatch at /posts/list/ 未找到“post_detail”的反向。“post_detail”不是有效的视图函数或模式名称
- list-comprehension - 多个列表中每个位置的最大值
- php - 在 CakePHP 中,如何从图像数组中获取客户端文件名?
- python - 如何在 Notepad++ 中为使用 Python 保存的 JSON 正确解析 JSON?