Comment puis-je faire fonctionner cela?
curl -XPOST 'http://localhost:9290/location/place' -d '{"geoloc": {"lat": "38.1899", "lon": "-76.5087"}, "longitude": "-76.5087", "admin_name1": "Maryland", "admin_name2": "St. Mary's", "admin_name3": "", "postal_code": "20692", "admin_code3": "", "country_code": "US", "admin_code1": "MD", "latitude": "38.1899", "admin_code2": "037", "accuracy": null, "place_name": "Valley Lee"}'
Le '
dans Mary's
est à l'origine de cet échec. Je l'exécute à partir d'un fichier comme cat curl-cmd.txt | sh
mais cela ne fonctionnera pas non plus depuis la ligne de commande. J'ai essayé d'utiliser \'
et \\'
et \u0027
(l'unicode '
)
Je suis coincé
J'ai eu le même problème. La solution la plus simple consiste à échapper à l'apostrophe avec une barre oblique inversée en plus de l'encapsuler dans un ensemble de guillemets simples. '\''
Pour votre cas d'utilisation, modifiez Mary's
à Mary'\''s
et ça devrait marcher.
curl -XPOST 'http://localhost:9290/location/place' -d '{"geoloc": {"lat": "38.1899", "lon": "-76.5087"}, "longitude": "-76.5087", "admin_name1": "Maryland", "admin_name2": "St. Mary'\''s", "admin_name3": "", "postal_code": "20692", "admin_code3": "", "country_code": "US", "admin_code1": "MD", "latitude": "38.1899", "admin_code2": "037", "accuracy": null, "place_name": "Valley Lee"}'
Une autre approche consiste à encapsuler les données POST (
-d
) entre guillemets doubles tout en échappant à toutes les occurrences imbriquées de guillemets doubles dans la chaîne JSON avec une barre oblique inverse.
curl -XPOST 'http://localhost:9290/location/place' -d "{\"geoloc\": {\"lat\": \"38.1899\", \"lon\": \"-76.5087\"}, \"longitude\": \"-76.5087\", \"admin_name1\": \"Maryland\", \"admin_name2\": \"St. Mary's\", \"admin_name3\": \"\", \"postal_code\": \"20692\", \"admin_code3\": \"\", \"country_code\": \"US\", \"admin_code1\": \"MD\", \"latitude\": \"38.1899\", \"admin_code2\": \"037\", \"accuracy\": null, \"place_name\": \"Valley Lee\"}"