簡體   English   中英

vibed:在輸出流的末尾寫入

[英]vibed: Writing past end of output stream

我不明白為什么會出錯:在下一個代碼上:

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");
    }
}

這是截圖

我做錯了什么?

writeJsonBody序列化響應JSON 一次 ,設置statuscontent_type和也關閉輸出流。 仔細看看您的代碼-它兩次調用res.writeJsonBody(responseBody)

如果要流式傳輸響應,則可以像這樣res.bodyWriter.put("a sentence.")一樣訪問輸出流,但是請注意,第一次訪問該流后,不允許更改任何內容。響應的標頭(例如狀態代碼),因為標頭已發送到客戶端。

順便說一句,您可能對Vibed的高級REST API功能感興趣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM