1

クライアントサーバー通信を行っています。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;}
}
4

1 に答える 1

0

を呼び出すとin.close()、実際には URL 接続で使用されるストリームが閉じられます。url.openConnection()ストリームを再開するには、もう一度電話する必要があります...

于 2012-09-19T10:10:41.353 に答える