diff --git a/src/Http/HttpClient.cpp b/src/Http/HttpClient.cpp
index 3b010f8..272cc40 100644
--- a/src/Http/HttpClient.cpp
+++ b/src/Http/HttpClient.cpp
@@ -153,11 +153,10 @@ int64_t HttpClient::onRecvHeader(const char *data, uint64_t len) {
 
     if(_parser["Content-Length"].empty()){
         //没有Content-Length字段
-//        if(_parser.Content().empty()){
-//            //content长度为0,本次http请求结束
-//            onResponseCompleted_l();
-//            return 0;
-//        }
+        auto ret = onResponseCompleted_l();
+        if(ret){
+            return 0;
+        }
         //如果http回复未声明Content-Length字段,但是却有content内容,那说明可能是个不限长度的content
         _totalBodySize = INT64_MAX;
         _recvedBodySize = 0;
@@ -228,26 +227,29 @@ void HttpClient::onManager() {
     }
 }
 
-void HttpClient::onResponseCompleted_l() {
+bool HttpClient::onResponseCompleted_l() {
     _totalBodySize = 0;
     _recvedBodySize = 0;
-    HttpRequestSplitter::reset();
-    onResponseCompleted();
+    bool ret = onResponseCompleted();
+    if(ret){
+        HttpRequestSplitter::reset();
+    }
+    return ret;
 }
 
-void HttpClient::checkCookie(HttpClient::HttpHeader &headers) {
+void HttpClient::checkCookie(const HttpClient::HttpHeader &headers) {
     //Set-Cookie: IPTV_SERVER=8E03927B-CC8C-4389-BC00-31DBA7EC7B49;expires=Sun, Sep 23 2018 15:07:31 GMT;path=/index/api/
-    auto set_cookie = headers["Set-Cookie"];
-    if(set_cookie.empty()){
+    auto it_set_cookie = headers.find("Set-Cookie");
+    if(it_set_cookie == headers.end()){
         return;
     }
-    auto key_val = Parser::parseArgs(set_cookie,";","=");
+    auto key_val = Parser::parseArgs(it_set_cookie->second,";","=");
 
     HttpCookie::Ptr cookie = std::make_shared<HttpCookie>();
     cookie->setHost(_lastHost);
 
     int index = 0;
-    auto arg_vec = split(set_cookie, ";");
+    auto arg_vec = split(it_set_cookie->second, ";");
     for (string &key_val : arg_vec) {
         auto key = FindField(key_val.data(),NULL,"=");
         auto val = FindField(key_val.data(),"=", NULL);
diff --git a/src/Http/HttpClient.h b/src/Http/HttpClient.h
index 9df8730..00f9c06 100644
--- a/src/Http/HttpClient.h
+++ b/src/Http/HttpClient.h
@@ -264,10 +264,12 @@ protected:
     };
 
     /**
-     * 接收http回复完毕
+     * 接收http回复完毕,
+     * @return 是否真的结束数据接收
      */
-    virtual void onResponseCompleted(){
+    virtual bool onResponseCompleted(){
     	DebugL;
+        return true;
     }
 
     /**
@@ -293,8 +295,8 @@ protected:
     virtual void onSend() override;
     virtual void onManager() override;
 private:
-    void onResponseCompleted_l();
-    void checkCookie(HttpHeader &headers );
+    bool onResponseCompleted_l();
+    void checkCookie(const HttpHeader &headers );
 protected:
     bool _isHttps;
 private:
diff --git a/src/Http/HttpDownloader.cpp b/src/Http/HttpDownloader.cpp
index b939a9d..a8724e3 100644
--- a/src/Http/HttpDownloader.cpp
+++ b/src/Http/HttpDownloader.cpp
@@ -83,7 +83,7 @@ void HttpDownloader::onResponseBody(const char* buf, size_t size, size_t recvedS
 	}
 }
 
-void HttpDownloader::onResponseCompleted() {
+bool HttpDownloader::onResponseCompleted() {
 	closeFile();
 	//InfoL << "md5Sum:" << getMd5Sum(_filePath);
 	_bDownloadSuccess = true;
@@ -91,6 +91,7 @@ void HttpDownloader::onResponseCompleted() {
 		_onResult(Err_success,"success",_filePath.data());
 		_onResult = nullptr;
 	}
+	return true;
 }
 
 void HttpDownloader::onDisconnect(const SockException &ex) {
diff --git a/src/Http/HttpDownloader.h b/src/Http/HttpDownloader.h
index 2c694c8..591c150 100644
--- a/src/Http/HttpDownloader.h
+++ b/src/Http/HttpDownloader.h
@@ -49,7 +49,7 @@ public:
 private:
 	void onResponseHeader(const string &status,const HttpHeader &headers) override;
 	void onResponseBody(const char *buf,size_t size,size_t recvedSize,size_t totalSize) override;
-	void onResponseCompleted() override;
+	bool onResponseCompleted() override;
 	void onDisconnect(const SockException &ex) override;
     void closeFile();
 private:
diff --git a/src/Http/HttpRequester.cpp b/src/Http/HttpRequester.cpp
index 68e4fa7..8b0f3e8 100644
--- a/src/Http/HttpRequester.cpp
+++ b/src/Http/HttpRequester.cpp
@@ -42,11 +42,12 @@ void HttpRequester::onResponseBody(const char *buf,size_t size,size_t recvedSize
     _strRecvBody.append(buf,size);
 }
     
-void HttpRequester::onResponseCompleted() {
+bool HttpRequester::onResponseCompleted() {
     if(_onResult){
         _onResult(SockException(),responseStatus(),responseHeader(),_strRecvBody);
         _onResult = nullptr;
     }
+    return true;
 }
     
 void HttpRequester::onDisconnect(const SockException &ex){
diff --git a/src/Http/HttpRequester.h b/src/Http/HttpRequester.h
index 3603237..1ce3ca5 100644
--- a/src/Http/HttpRequester.h
+++ b/src/Http/HttpRequester.h
@@ -42,7 +42,7 @@ public:
 private:
     void onResponseHeader(const string &status,const HttpHeader &headers) override;
     void onResponseBody(const char *buf,size_t size,size_t recvedSize,size_t totalSize)  override;
-    void onResponseCompleted() override;
+    bool onResponseCompleted() override;
     void onDisconnect(const SockException &ex) override;
 private:
     string _strRecvBody;
diff --git a/src/Http/HttpSession.cpp b/src/Http/HttpSession.cpp
index 88de812..fa25369 100644
--- a/src/Http/HttpSession.cpp
+++ b/src/Http/HttpSession.cpp
@@ -515,7 +515,7 @@ inline bool HttpSession::makeMeun(const string &strFullPath,const string &vhost,
 }
 inline void HttpSession::sendResponse(const char* pcStatus, const KeyValue& header, const string& strContent) {
 	_StrPrinter printer;
-	printer << "HTTP/1.1 " << pcStatus << " \r\n";
+	printer << "HTTP/1.1 " << pcStatus << "\r\n";
 	for (auto &pr : header) {
 		printer << pr.first << ": " << pr.second << "\r\n";
 	}