Description du problème
Je veux envoyer une demande de poste http à un BLAST website en ligne .Je inspecta les requêtes POST et a vu ceci:Python données de formulaire http format post demande
Request URL:https://p3.theseed.org/services/homology_service
Referrer Policy:no-referrer-when-downgrade
Request Headers
Provisional headers are shown
Accept:application/json
Content-Type:application/x-www-form-urlencoded
Origin:https://www.patricbrc.org
Referer:https://www.patricbrc.org/
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
X-Requested-With:XMLHttpRequest
Form Data
{"method":"HomologyService.blast_fasta_to_database","params":[">test
ATAGCTAACAGCATC","blastn","ref.fna","10",50,0],"version":"1.1","id":"27057295081137034"}:
Maintenant, je veux faire ceci pour plusieurs séquences (remplaçant ainsi le ATAGCTAACAGCATC
). Je connais l'envoi de ce type de demande, mais je ne sais pas maintenant comment:
- Format du
form data
, donc je peux l'envoyer à l'aide Requests - Ce que je dois faire avec le
id
dans le poste , parce que je ne le sais pas parce que c'est unique pour chaque travail BLAST.
code
import requests as r
blast_url = 'https://p3.theseed.org/services/homology_service'
data = {"method":"HomologyService.blast_fasta_to_database","params":["%3Etest%0ATAGCTAACAGCATC","blastp","ref.faa","10",'50','0'],"version":"1.1"}
headers = {
'Host': 'p3.theseed.org',
'Accept': 'application/json',
'Accept-Language': 'en-US,en;q=0.5',
'Referer': 'https://www.patricbrc.org/app/BLAST',
'Content-Type': 'application/rqlquery+x-www-form-urlencoded',
'X-Requested-With' : 'XMLHttpRequest'
}
res = r.post(blast_url, headers = headers, params = data).text
print(res)
Je n'ai pas rempli dans le id
, mais cela ne semble pas être un problème parce que dans le message d'erreur l'identifiant est rempli (il semble donc ? à généré automatiquement) Ceci est l'erreur que je reçois:
{"id":"15004153692662703","error":{"name":"JSONRPCError","code":-32700,"message":"You did not supply any JSON to parse in the POST body."},"version":"1.1"}
Alors, évidemment, la mauvaise mise en forme pour les données de formulaire donne ces pro blèmes, mais je ne sais pas comment je formater ce (et si cela va résoudre le problème)
Bien génie qui a fonctionné;) Merci beaucoup – CodeNoob