METTRE de la Demande pour le REPOS de l'API à l'aide de Python
Pour une raison quelconque, mon mettre de la demande ne fonctionne pas et j'obtiens des erreurs de syntaxe. Je suis nouveau sur Python, mais j'ai mon POST et GET demandes de travail. Personne ne vois rien de mal avec cette demande et de toutes les recommandations? Je suis en train de changer la description de "Changé Description"
METTRE
#import requests library for making REST calls
import requests
import json
#specify url
url = 'my URL'
token = "my token"
data = {
"agentName": "myAgentName",
"agentId": "20",
"description": "Changed Description",
"platform": "Windows"
}
headers = {'Authorization': 'Bearer ' + token, "Content-Type": "application/json", data:data}
#Call REST API
response = requests.put(url, data=data, headers=headers)
#Print Response
print(response.text)
Voici l'erreur que j'obtiens.
Traceback (most recent call last):
line 17, in <module>
headers = {'Authorization': 'Bearer ' + token, "Content-Type": "application/json", data:data}
TypeError: unhashable type: 'dict'
Pour une raison quelconque, mon mettre de la demande ne fonctionne pas et j'obtiens des erreurs de syntaxe.</j'ai> bien Évidemment, il est crucial que vous copiez et collez ces erreurs-là, car ils seront plus susceptibles de résoudre le problème instantanément.
Je suis d'accord avec vous. J'ai mis à jour mon premier post ci-dessus avec l'erreur.
Vous avez votre
Je suis d'accord avec vous. J'ai mis à jour mon premier post ci-dessus avec l'erreur.
Vous avez votre
data
dans vos en-têtes, probablement vous avez juste besoin de supprimer les données de votre en-têtes vous déjà passer comme data
paramètre.OriginalL'auteur Tim | 2015-10-14
Vous devez vous connecter pour publier un commentaire.
Erreur de syntaxe en raison de
=
signe dans votreheaders
dictionnaire:Il devrait être:
Voir
data=data
est changé avec'data':data
. Du côlon et des Guillemets Simples.Et êtes-vous sûr que vous serez l'envoi de données dans vos têtes? Ou vous devez remplacer votre
payload
avecdata
dans votreput
demande?Edit:
Que vous avez édité la question et maintenant vous envoyez des données à METTRE la demande du corps
requests.put(data=data)
, donc il est inutile d'en-têtes. Il vous suffit de changer les en-têtes:Mais comme vous avez défini votre
Content-Type
en-tête deapplication/json
donc je pense que METTRE dans votre demande que vous devriez fairequi est l'envoi de vos données en json.
il vous manque toujours des guillemets simples autour de votre
'data':data
.data
est un dict qui ne peut pas être une clé pour une autre dict.vous êtes correct. C'est ce que je devais faire. Je vous remercie.
OriginalL'auteur Muhammad Tahir
Le problème, c'est que vous essayez d'attribuer
data
à ladata
élément dans votre dictionnaire:Qui ne peuvent pas travailler parce que vous ne pouvez pas utiliser un dictionnaire comme une clé dans un dictionnaire (techniquement, car il n'est pas hashable).
Vous avez probablement voulu faire
J'ai pris le code directement à partir de votre message d'erreur, donc c'était bel et bien là!
Assurez-vous toujours que le code que vous publiez est exactement le code avec lequel vous avez des problèmes
lol ok Marcus. Votre solution n'est pas la réponse. Désolé.
OriginalL'auteur Marcus Müller