J'ai une série de données à entrer dans la base de données. L'interface utilisateur pour saisir les données n'est pas bonne pour la saisie en bloc, j'essaie donc de formuler un équivalent en ligne de commande. Lorsque j'examine la demande réseau de l'interface utilisateur dans chrome, je vois une demande PUT d'un objet json. Quand j'essaye de répliquer la demande
curl -H 'Accept: application/json' -X PUT '{"tags":["tag1","tag2"],"question":"Which band?","answers":[{"id":"a0","answer":"Answer1"},{"id":"a1","answer":"answer2"}]}' http://example.com/service`
J'obtiens une erreur
curl: (3) [globbing] accolades imbriquées non prises en charge à la pos X
Où X est la position du caractère du premier "[".
Comment puis-je METTRE un objet json qui comprend un tableau?
Bien que le message original ait eu d'autres problèmes (c'est-à-dire le "-d" manquant), le message d'erreur est plus générique.
Ceci est dû au fait que les accolades {} et les crochets [] sont des caractères globuleux spéciaux dans curl. Pour désactiver ce globbing, utilisez l' option " -g ".
À titre d'exemple, la requête de facette Solr suivante échouera sans le "-g" pour désactiver le globbing curl :
curl -g 'http://localhost:8983/solr/query?json.facet={x:{terms:"myfield"}}'
la source
-g
travaillé comme prévu. Merci @YonikIl convient de mentionner que l'en-
Accept
tête dit au serveur quelque chose sur ce que nous acceptons en retour, alors que l'en-tête pertinent dans ce contexte estContent-Type
Il est souvent conseillé de spécifier
Content-Type
commeapplication/json
lors de l'envoi de JSON. Pour curl, la syntaxe est:La commande curl complète sera donc:
la source
Essayez d'utiliser un guillemet simple au lieu de guillemets doubles avec -g
Le scénario suivant a fonctionné pour moi
AVEC
Cela a particulièrement résolu mon erreur de commande curl: une mauvaise URL deux points est le premier caractère
la source
La seule chose qui a aidé est d'utiliser un fichier JSON au lieu du corps de texte json. Basé sur Comment envoyer le contenu d'un fichier en tant qu'entité de corps à l'aide de cURL
la source