// ---------------< read the contents of the message body, if it is a normal message >---------- HttpMessage ClientHandler::readBody(HttpMessage msg, Socket& socket) { size_t numBytes = 0; size_t pos = msg.findAttribute("content-length"); HttpMessage message = msg; if (pos < msg.attributes().size()) { numBytes = Converter<size_t>::toValue(msg.attributes()[pos].second); Socket::byte* buffer = new Socket::byte[numBytes + 1]; socket.recv(numBytes, buffer); buffer[numBytes] = '\0'; std::string msgBody(buffer); message.addBody(msgBody); delete[] buffer; } return message; }
HttpMessage MsgClient::readMessage(Socket& socket) { Show::write("Client readMessage \n"); //connectionClosed_ = false; HttpMessage msg; //read attribute while (true) { std::string attribString = socket.recvString('\n'); if (attribString.size() > 1) { HttpMessage::Attribute attrib = HttpMessage::parseAttribute(attribString); msg.addAttribute(attrib); } else { break; } } if (msg.attributes().size() == 0) { return msg; } if (msg.attributes()[0].first == "POST") { std::string filePath = msg.findValue("filePath"); if (filePath != "") { Show::write("Test for get FolderList"); size_t numBytes = 0; size_t pos = msg.findAttribute("content-length"); if (pos < msg.attributes().size()) { numBytes = Converter<size_t>::toValue(msg.attributes()[pos].second); Socket::byte* buffer = new Socket::byte[numBytes + 1]; socket.recv(numBytes, buffer); buffer[numBytes] = '\0'; std::string msgBody(buffer); msg.addBody(msgBody); Show::write("getFolderList:" + msgBody + "\n"); } } } return msg; }