Java 桌面客户端web服务器通信

Java 桌面客户端web服务器通信,java,servlets,webserver,client-server,protocolexception,Java,Servlets,Webserver,Client Server,Protocolexception,我正在做客户机-服务器通信。我通过URLConnection类将两者连接起来 现在我正在尝试将登录信息发送到服务器,服务器将检查信息是否正确,否则它将要求我再次登录,对于这种情况,让我们假设登录失败。但在收到服务器的响应后,当我再次尝试发送登录信息时,我得到的是 java.net.ProtocolException: Cannot write output after reading input. 这是我的密码: URL url = new URL(uniRL); java.net.URLC

我正在做客户机-服务器通信。我通过URLConnection类将两者连接起来

现在我正在尝试将登录信息发送到服务器,服务器将检查信息是否正确,否则它将要求我再次登录,对于这种情况,让我们假设登录失败。但在收到服务器的响应后,当我再次尝试发送登录信息时,我得到的是

java.net.ProtocolException: Cannot write output after reading input.
这是我的密码:

URL url = new URL(uniRL);

java.net.URLConnection connection = url.openConnection();
connection.setAllowUserInteraction(true);
connection.setDoOutput(true);

while(true){
    System.out.println("Enter 1-login , 2-Exit");
useroption = input.nextLine();
numOption = Integer.parseInt(useroption);
if( numOption == 1){
    OutputStreamWriter writer = new OutputStreamWriter(
            connection.getOutputStream());
    user_login = login();
    writer.write(user_login[0]+"@");
    writer.write(user_login[1]);
    writer.flush();
    //out.close();
    BufferedReader in = new BufferedReader(
            new InputStreamReader(
                    connection.getInputStream()));
    while ((tempString = in.readLine()) != null) {
        decodedString = tempString;
        //System.out.println(decodedString);
        //System.out.println(decodedString.equalsIgnoreCase("unknown user"));
    }
    in.close();
    if((decodedString.equalsIgnoreCase("unknown user"))){continue;}
    else{break;}
}

当您调用in.close时,实际上是在关闭URL连接使用的流。您需要再次调用url.openConnection以重新打开流…

兄弟谢谢您的帮助,我在没有in.close的情况下尝试了它。它仍然不起作用。我也遇到了同样的例外…我不知道你为什么选择URLConnection来做这件事,我可能会做一个直接的套接字连接,你能给我一些很好的例子/链接,让我在desktopclient和web服务器上使用套接字吗?这将非常有帮助。。thankyou@HaseebWali您使用的是什么协议??HTTP??您在哪一行获得此异常?发布异常跟踪会有所帮助。当循环进行第二次迭代时,我会收到异常。第二次试着写点东西。