Maison > Questions et réponses > le corps du texte
Certains noms sont répétés, et certaines valeurs sont vides, comme sel_title, comment le résoudre ?
J'ai écrit le formulaire comme ceci. Je ne sais pas ce qui ne va pas. Le résultat est 400 mauvaises demandes.
form={'begin_ap': 'a',
'begin_hh': '0',
'begin_mi': '0',
'end_ap': 'a',
'end_hh': '0',
'end_mi': '0',
'sel_attr': ['dummy', '%'],
'sel_camp': ['dummy', '%'],
'sel_crse': '512',
'sel_day': 'dummy',
'sel_from_cred': '',
'sel_insm': ['dummy', '%'],
'sel_instr': ['dummy', 'ED2E4E78451EB376949C4166DC00AFAF'],
'sel_levl': 'dummy',
'sel_ptrm': ['dummy', '%'],
'sel_schd': ['dummy', '%'],
'sel_sess': ['%', 'dummy'],
'sel_subj': ['dummy', 'STAT'],
'sel_title': '',
'sel_to_cred': '',
'term_in': '201810'}
阿神2017-05-18 10:59:52
Vous n'en savez pas assez sur le type de contenu et la structure du protocole http
Tout d'abord, les données de votre formulaire sont relativement complexes, donc l'en-tête d'information Content-Type: application/json est le plus approprié. Le principe est que le serveur qui reçoit la demande de publication prend en charge l'analyse json du corps
.Le serveur ne prend généralement en charge que ou non l'analyse du corps :
application/x-www-form-urlencoded et
multipart/form-data
(nodejs express doit ajouter des plug-ins body-parser et multer)
application/x-www-form-urlencoded est k1=v1&k2=v2...une telle structure key=>str_val, elle ne convient donc pas aux données de votre formulaire de dictionnaire multi-niveaux
À propos de l'envoi du formulaire, la partie du corps est constituée de données JSON
import json
import requests
url = 'https://api.github.com/some/endpoint'
# 声明数据类型, 有些框架会自动识别并解析json
headers = {'Content-Type': 'application/json; charset=utf-8'}
# form = {'begin_ap': 'a', ...}
r = requests.post(url, data=json.dumps(form), headers=headers)
# 接收请求的服务端, 如果是flask框架(python)
# 则request.json 即可取到字典结构的form数据
# request.form 则取不到form数据(需要 application/x-www-form-urlencoded 或 multipart/form-data)
Si votre framework ne prend pas en charge l'analyse de l'application POST/json par défaut, vous devez effectuer vous-même une analyse json sur les données brutes du corps demandées pour obtenir les données souhaitées
怪我咯2017-05-18 10:59:52
Le code est le suivant :
import requests
url = 'http://httpbin.org/post'
r = requests.post(url, data=[('interests', 'football'), ('interests', 'basketball')])
r.request.body
r.json()['form']
r = requests.post(url, data={'interests': ['football', 'basketball']})
r.request.body
r.json()['form']
Les résultats sont les suivants :
Out[100]:
'interests=football&interests=basketball'
Out[100]:
{u'interests': [u'football', u'basketball']}
Out[100]:
'interests=football&interests=basketball'
Out[100]:
{u'interests': [u'football', u'basketball']}
S'il est vide, cela dépend de votre définition et du contexte. Cela signifie passer une chaîne vide ''
还是 key
也不传, value
写 None
世界只因有你2017-05-18 10:59:52
Postman est recommandé. Vous pouvez utiliser Postman pour tester le formulaire de demande avant d'écrire du code
.