2016-06-14 42 views
0

我不明白为什么我收到错误:在下面的代码 :vibed:编写过去输出流的末尾

void logout(HTTPServerRequest req, HTTPServerResponse res) 
{ 
    try 
    { 
     logInfo("Logout section"); 
     Json request = req.json; 
     Json responseBody = Json.emptyObject; // 

     if (req.session) // if user have active session 
     { 
      res.terminateSession(); 
      responseBody["status"] = "success"; 
      responseBody["isAuthorized"] = false; 
      res.writeJsonBody(responseBody); 
      logInfo("-------------------------------------------------------------------------------"); 
      logInfo(responseBody.toString); 
      logInfo("^-----------------------------------------------------------------------------^");        
      logInfo("User %s logout", request["username"]); // 
      logInfo("User 12333333333333 logout"); // 
     } 

     else 
     { 
      responseBody["status"] = "fail"; // user do not have active session? 
      logInfo("User do not have active session"); 
      res.writeJsonBody(responseBody); 
     } 
    writeln("-------before-------"); 
    writeln(responseBody.toString); 
    res.writeJsonBody(responseBody); 
    writeln("-------after-------"); 
    } 

    catch (Exception e) 
    { 
     logInfo(e.msg); 
     writeln("3333"); 
    } 
} 

下面是screenshot

我做错了吗?

回答

3

writeJsonBody串行化一次响应JSON ,设置statuscontent_type和也关闭输出流。仔细看看你的代码 - 它调用res.writeJsonBody(responseBody)两次。

如果您想传输响应,您可以像这样访问输出流res.bodyWriter.put("a sentence."),但是请注意,一旦首次访问它,不允许更改任何标题(例如状态码)的响应,因为标题已发送到客户端。

顺便说一下,您可能会对Vibed的高级REST API功能感兴趣。