Ne peut pas écrire la sortie après la lecture de l'entrée
Je suis en train d'écrire un programme qui se connecte à un servlet grâce à un HttpURLConnection
mais je suis bloqué lors de la vérification de l'url
public void connect (String method) throws Exception {
server = (HttpURLConnection) url.openConnection ();
server.setDoInput (true);
server.setDoOutput (true);
server.setUseCaches (false);
server.setRequestMethod (method);
server.setRequestProperty ("Content-Type", "application /xml");
server.connect ();
/*if (server.getResponseCode () == 200)
{
System.out.println ("Connection OK at the url:" + url);
System.out.println ("------------------------------------------- ------- ");
}
else
System.out.println ("Connection failed");
}*/
J'ai obtenu l'erreur :
java.net.ProtocolException: Impossible d'écrire la sortie après la lecture de l'entrée.
si je vérifier l'url avec le code dans les commentaires, mais il fonctionne parfaitement sans qu'il
malheureusement, j'ai besoin de vérifier l'url donc je pense que le problème vient de la getResponseCode
méthode, mais je ne sais pas comment le résoudre
Merci beaucoup
OriginalL'auteur ulquiorra | 2012-07-10
Vous devez vous connecter pour publier un commentaire.
Le protocole HTTP est basé sur une requête-configuration de réponse: vous envoyez votre demande d'abord et le serveur répond. Une fois que le serveur a répondu, vous ne pouvez pas envoyer plus de contenu, il ne serait pas logique. (Comment le serveur vous donner un code de réponse avant il sait qu'est-ce que vous essayez d'envoyer?)
Ainsi, lorsque vous appelez
server.getResponseCode()
, vous pouvez effectivement dire au serveur que votre demande a bien terminé et qu'il peut traiter. Si vous voulez envoyer plus de données, vous devez démarrer une nouvelle demande.En regardant votre code, vous voulez vérifier si la connexion a réussi, mais il n'y a pas besoin de cela: si la connexion n'est pas réussie, un
Exception
est jeté parserver.connect()
. Mais le résultat d'une tentative de connexion n'est pas le même que le code de réponse HTTP, qui vient toujours après le serveur traité tous vos commentaires.mais le serveur est peut-erreur de réponse, avant de finir la poste. comment lire le début de réponse avec HttpURLConnection?
Je crois que je suis confronté à ce problème. Il y a un
getResponseCode()
suivie par ungetOutputStream();
. Seriez-vous d'accord que cela va causer unCannot write output after reading input
?OriginalL'auteur
Je pense que l'exception n'est pas due à
printing url
. Il devrait y un morceau de code qui est d'essayer d'écrire pour définir le corps de la requête après que la réponse est à lire.Cette exception se produit si vous essayez d'obtenir
HttpURLConnection.getOutputStream()
après l'obtention deHttpURLConnection.getInputStream()
Ici est l'implentation de soleil.net.www.le protocole.http.HttpURLConnection.getOutputStream:
Oui, vous pouvez le faire qu'avant l'obtention du serveur.getInputStream(). Vous ne pouvez pas le faire par la suite.
OriginalL'auteur
J'ai ce problème aussi, ce qui me surprend, c'est que l'erreur est causée par mon code ajouté
System.out.println(conn.getHeaderFields());
Ci-dessous mon code:
OriginalL'auteur
J'ai eu le même problème.
La solution pour le problème est que vous devez utiliser la séquence
Que cela signifie..:
OriginalL'auteur