Affichage des données JSON avec Groovy du HTTPBuilder
J'ai trouvé ce doc sur la façon de publier les données JSON à l'aide de HttpBuilder. Je suis nouveau à cela, mais il est très simple exemple et facile à suivre. Voici le code, en supposant que j'avais importé toutes les dépendances nécessaires.
def http = new HTTPBuilder( 'http://example.com/handler.php' )
http.request( POST, JSON ) { req ->
body = [name:'bob', title:'construction worker']
response.success = { resp, json ->
//response handling here
}
}
Maintenant mon problème est que j'obtiens une exception de
java.lang.NullPointerException
at groovyx.net.http.HTTPBuilder$RequestConfigDelegate.setBody(HTTPBuilder.java:1131)
Ai-je raté quelque chose? Je vais grandement reconnaissant de toute aide que vous pouvez faire.
OriginalL'auteur Christopher Laconsay | 2011-07-26
Vous devez vous connecter pour publier un commentaire.
J'ai pris un coup d'oeil à HttpBuilder.java:1131, et je devine que le type de contenu de l'encodeur qu'il récupère dans cette méthode, la valeur est null.
La plupart des POST exemples ici définir la
requestContentType
propriété dans le constructeur, qui est à quoi il ressemble le code pour obtenir que l'encodeur. Essayez comme ceci:Regarde comme vous avez obtenu plus loin; les nouvelles entrées en phase nationale, c'est quand il essaie de trouver la réponse appropriée gestionnaire. La demande probablement échoué, de sorte que vous aurez envie d'une défaillance du gestionnaire. Je vais mettre à jour mon exemple.
"sur la valeur de l'uri.chemin, est-il besoin d'être un chemin d'accès existant" - Si l'hôte n'existe pas, vous obtiendrez quelque sorte d'erreur de connexion. Si elle n'existe pas, mais la ressource que vous publiez n'existe pas, vous obtiendrez une erreur HTTP 404 ou quelque chose.
Pas bon du tout, je suis encore en train de la même NPE à l'aide de l'exemple que vous aviez prévu. Je pense que l'exception est lancée avant d'atteindre l'échec de gestionnaire de la ligne.
Il a travaillé pour moi. J'ai eu un
NPE at groovyx.net.http.HTTPBuilder$RequestConfigDelegate.setBody(HTTPBuilder.java:1200)
et a été résolu par l'ajout de la requestContentType. MerciOriginalL'auteur Rob Hruska
J'ai eu le même problème il y a un moment et trouvé un blog qui a noté le "requestContentType' doit être réglé avant de "corps". Depuis, j'ai ajouté le commentaire "Set ConentType avant du corps ou de risque de pointeur null" dans chacun de mes httpBuilder méthodes.
Ici est le changement, je dirais pour votre code:
Cheers!
Salut dmitryvim, parlez-vous de la demande de publication de la réponse JSON? Ou êtes-vous essayer de définir des champs de type chaîne à l'intérieur du corps JSON à null?
OriginalL'auteur
Si vous avez besoin d'exécuter un POST avec le contentType JSON et passer un complexe de données json, essayez de convertir votre corps manuellement:
OriginalL'auteur Carlos André Oliveira
J'ai trouvé la réponse dans ce post: POST avec HTTPBuilder -> NullPointerException?
Ce n'est pas la accepté de répondre, mais il a travaillé pour moi. Vous devrez peut-être définir le type de contenu avant de spécifier le 'corps' de l'attribut. Il semble idiot de moi, mais il est là. Vous pouvez également utiliser 'envoyer contentType, [attrs]' la syntaxe, mais j'ai trouvé plus difficile de test de l'unité. Espérons que cette aide (en retard comme il est)!
OriginalL'auteur Michael D Johnson
J'ai renoncé à HTTPBuilder dans mon Graal application (par courrier postal, au moins) et utilisé le
sendHttps
méthode ici.(Garder à l'esprit que si vous utilisez directement Groovy à l'extérieur d'un Grain d'application, les techniques de/encodage JSON seront différents de ceux ci-dessous)
Il suffit de remplacer le type de contenu avec
application/json
dans les lignes suivantes desendHttps()
Vous serez également responsable pour le rassemblement de données JSON
OriginalL'auteur perlyking