J'essaie d'accéder à un site via leur exportation JSON.
L'URL est la suivante: http://neotest.dabbledb.com/publish/neotest/f820728C-4451-41f6-b346-8cba54e52c6f/projects.jsonp P>
J'utilise httpbuilder pour essayer d'accomplir cela à Groovy, mais j'ai des problèmes. J'ai utilisé le code exemple de http://groovy.codehaus.org/http+builder à Venez avec ceci: p> Toutefois, lorsque j'exécute le test de l'unité pour la méthode, je reçois simplement pas de ce type de propriété: obtenir pour la classe: ProjectController groovy.lang. MissingPropertyException: pas de propriété de ce type: obtenir la classe: ProjectController Code> dont j'ai du mal à comprendre. P> p>
5 Réponses :
Je ne connais pas le httpbuilder, mais je regarde la documentation, vous pourrez peut-être obtenir en remplaçant avec p> Vous devrez peut-être aussi: P> import groovyx.net.http.Method
import groovyx.net.http.ContentType
Je ne suis pas marié à httpbuilder par aucun étirement, c'était ce que quelques-unes des principales entrées Google suggérées pour les appels JSON à partir de GRAVES. S'il y a une autre solution que vous recommanderiez, je suis tout ce que je ne fais pas beaucoup de progrès ici.
Beaucoup de gens recommandent à HTTPCLIPT d'Apache, que le constructeur HTTP semble être basé sur, donc c'est probablement la meilleure option. J'essayais juste d'aider à résoudre ce qui semblait être une erreur de compilation dans votre script Groovy. Si le constructeur HTTP ne fonctionne pas, vous pouvez simplement écrire un Java droit dans votre groovy qui utilise httpClient ou même Java.net. *, Bien que ce soit un peu plus de code.
Il y a quelques problèmes avec votre code exemple. Tout d'abord, pour accéder à GET et JSON de cette façon, vous devez les importer statiquement:
println json.name println json.id json.fields.each { println it }
Bien que ne répondez pas à la question initiale, j'ai remarqué que vous avez invité à propos d'autres bibliothèques possibles. En ignorant Groovy que je n'ai pas utilisé pour cela, la meilleure et la plus simple bibliothèque de Java pour la construction d'un client de services Web est Jersey à mon avis, la main vers le bas. P>
Si vous voulez simplement aller chercher les données, vous pouvez le faire dans GRAVES de cette façon:
import grails.converters.*; def url = new URL("http://neotest.dabbledb.com/publish/neotest/f820728c-4451-41f6-b346-8cba54e52c6f/projects.jsonp") def response = JSON.parse(url.newReader()) // response is an instance of JSONObject (see Grails API docs) println response.toString(3) // Pretty-printed output response.each { key, value -> println "$key = $value" }
Prudent ici! Cet exemple va fuir le lecteur (et à son tour java.net.httpurlconnection et avec cela, la prise!), Et il n'utilisera pas le codage de caractères spécifié par le serveur distant (mais il utilisera le codage par défaut de votre plate-forme). En d'autres termes: URL.Newreader est mauvais dans le cas général
Nous pouvons analyser le texte JSON avec la classe JSONSLURPER. Nous n'avons que de nourrir le texte à la méthode Persetext () et nous pouvons que les valeurs soient mappées sur des cartes et des listes. Et obtenir le contenu est alors très facile