Webservice appel renvoie une erreur 500
J'ai commencé un petit projet en Java.
J'ai créer un client qui va envoyer du xml pour une url de requête HTTP POST.
Je l'ai essayer en utilisant java.net.*
paquet (Suivant est le morceau de code), mais j'obtiens l'erreur suivante:
java.io.IOException: Server returned HTTP response code: 500 for URL: "target url"
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)
at newExample.main(newExample.java:36)
Mon code est comme suit:
try {
URL url = new URL("target url");
URLConnection connection = url.openConnection();
if( connection instanceof HttpURLConnection )
((HttpURLConnection)connection).setRequestMethod("POST");
connection.setRequestProperty("Content-Length", Integer.toString(requestXml.length()) );
connection.setRequestProperty("Content-Type","text/xml; charset:ISO-8859-1;");
connection.setDoOutput(true);
connection.connect();
//Create a writer to the url
PrintWriter writer = new PrintWriter(new
OutputStreamWriter(connection.getOutputStream()));
//Get a reader from the url
BufferedReader reader = new BufferedReader(new
InputStreamReader(connection.getInputStream()));
writer.println();
writer.println(requestXml);
writer.println();
writer.flush();
String line = reader.readLine();
while( line != null ) {
System.out.println( line );
line = reader.readLine();
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
S'il vous plaît aider avec des modèles convenables ou de tout autre façons de le faire.
Point erreurs dans le code ci-dessus ou d'autres possibilités.
Mon Web Service est un Service framework spring
xml à envoyer dans la chaîne de format: requestXml
Erreur HTTP 500 "erreur interne du serveur" générique erreur renvoyée lorsque le service a rencontré une erreur, ou lève une exception. Vous pouvez lire la réponse complète du corps et de voir si a tout complément d'information
code d'erreur 500 est une Erreur de Serveur Interne. Donc, je vous concentrer sur le serveur plutôt que le client vraiment.
Si votre URL est correcte (peut vérifier à partir du navigateur), il n'y a pas beaucoup que vous pouvez faire. Ressemble erreur du côté serveur.
code d'erreur 500 est une Erreur de Serveur Interne. Donc, je vous concentrer sur le serveur plutôt que le client vraiment.
Si votre URL est correcte (peut vérifier à partir du navigateur), il n'y a pas beaucoup que vous pouvez faire. Ressemble erreur du côté serveur.
OriginalL'auteur sushil | 2011-03-01
Vous devez vous connecter pour publier un commentaire.
Le problème réside dans le code ci-dessous
Que le service ne renvoie pas toujours la bonne réponse... que vous appelez un service via http, il peut être possible que le serveur n'est pas disponible ou que le service n'est pas disponible. Donc, vous devriez toujours vérifier le code de réponse avant de lire la réponse de ruisseaux, basé sur le code de la réponse que vous avez à décider à le lire à partir de inputStream pour la réussite de réponse ou de errorStream de l'échec ou de l'exception de la condition.
Cela permettrait de résoudre le problème
getResponeCode, est ce que cette méthode existe réellement? Je ne la trouvez pas ici - docs.oracle.com/javase/7/docs/api/java/net/URLConnection.html
Je typecasted objet de connexion à HttpURLConnection alors je pourrais obtenir le code de réponse.
OriginalL'auteur LuckyNandish
Le problème est à l'intérieur de votre code serveur ou le serveur de configuration:
(w3c.org/Protocols)
Si le serveur est sous votre contrôle (ce qui devrait être, si je regarde l'URL [avant de les modifier]), puis un coup d'oeil dans les logs du serveur.
OriginalL'auteur Andreas_D
Bien, vous devez fermer votre flux et les connexions. Automatique de ressources maangement à partir de Java 7 ou http://projectlombok.org/ peut vous aider. Cependant, ce n'est probablement pas le principal problème.
Le principal problème est que le côté serveur échoue. Code HTTP 500 signifie côté serveur erreur. Je ne peux pas vous dire la raison, parce que je ne sais pas le côté serveur de la partie. Peut-être que vous devriez regarder dans le journal du serveur.
OriginalL'auteur v6ak
Je pense que votre problème est que vous êtes de l'ouverture du flux d'entrée avant que vous avez écrit et fermé le flux de sortie. Certes, la Soleil Tutoriel t-il de cette façon.
Si vous ouvrez le flux d'entrée trop tôt, il est possible que le flux de sortie sera automatiquement fermée, provoquant le serveur pour voir un vide requête POST. Cela pourrait être suffisant pour provoquer de la confusion et envoyer une réponse 500.
Même si ce n'est pas ce qui est à l'origine de la 500 erreurs, c'est une bonne idée de faire les choses dans l'ordre indiqué dans le tutoriel. Pour commencer, si vous avez accidentellement lire la réponse avant que vous avez terminé d'écrire le demande, vous êtes probablement (au moins temporairement) de verrouillage de la connexion. (En fait, on dirait que votre code est de le faire parce que vous n'êtes pas la fermeture de l'auteur avant de lire à partir du lecteur.)
Une question distincte, c'est que votre code n'est pas de fermer la connexion dans toutes les circonstances, et est donc responsable de la fuite des connexions réseau. Si elle le fait à plusieurs reprises, il est susceptible de conduire à plus de IOExceptions.
OriginalL'auteur Stephen C
Si vous appelez un Externe Webservice et le passage d'un JSON dans le RESTE d'appel, vérifier le type de données des valeurs transmises.
Exemple:
Dans cet exemple, la valeur de la somme a été envoyé comme une chaîne de caractères et le webservice l'appel a échoué avec le Serveur a renvoyé le code HTTP de la réponse: 500.
Mais lorsque le montant: 16.0 a été envoyé, je l'.e un Entier a été adoptée, l'appel est passé. Si vous avez fait référence à la documentation des API, tout en appelant externe Api, de petits détails comme celui-ci pourrait être manquée.
OriginalL'auteur Pooja V