首页 > 解决方案 > 发送 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 希望缺少该网站不是问题来回答这个问题,如果是请告诉我,也许我可以要求提及他们的网站)在此处输入图像描述

标签: pythonpostrequest

解决方案


我猜您提交到该特定网站的字符串/序列是问题所在。我针对 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"
}

推荐阅读