2015-01-16 1 views
0

Я пытаюсь реализовать java-сервер с http-фреймами, у меня есть несколько URI: /login.jsp и /logout.jsp, которые находятся в запросе URi в формате http.Отсутствующие символы в строке java

Когда я посылаю запрос выхода из системы на сервер я посылаю его с головой, как так:

Cookie: user_auth="SomeCookie". 

Вот код:

public HttpMessage nextMessage() { 
    if (!isAlive()) { 
     try { 
      throw new IOException("Tokenizer is Closed"); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    // Return String 
    HttpMessage newMessage = null; 
    String output = null; 
    StringBuilder stringBuilder = new StringBuilder(); 
    try { 
     int c; 

     while ((c = this.fInputStream.read()) != -1) { 
      if (c == this.fDelimiter) 
       break; 
      else 
       stringBuilder.append((char) c); 
     } 
     // Create an HttpMessage from the information received 
     output = stringBuilder.toString(); 

    } catch (IOException e) { 
     this.fClosed = true; 
     try { 
      throw new IOException("Connection is Dead"); 
     } catch (IOException e1) { 
      e1.printStackTrace(); 
     } 
    } 
    newMessage = parseHttp(output); 
    return newMessage; 
} 

Метод parseHttp ломает тип, и заголовки Кроме.

Но проблема после отправки входа действия на сервер, если я пытаюсь отправить выход из системы действия разобранной информации, хранящаяся в строке строителе недостающими символов (более конкретно RequestType, RequestURI и HttpVersion) отсутствуют, и можно найти только заголовок.

Кроме того, если я пытаюсь напечатать каждый символ, который я получаю от inputStream, то я вижу все символы, которые должны находиться в кадре.

ответ

0

Вы действительно хотите, чтобы линия break;, а не перерыв continue;, заставит цикл while выйти, а использование continue просто пропустит else и запустит следующую итерацию цикла while.

+0

Спасибо! хотя продолжение не будет работать здесь, я получил намек на то, что может быть проблемой. Проблема с моим кодом заключалась в том, что нулевой символ остался в inputStreamReader, и в следующий раз, когда я попытался прочесть из потока, первым символом, который я получил, был нулевой символ, хотя странно, что я все еще мог читать другие символы до следующего разделителя .. – user3040942