mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2024-11-26 04:31:37 +08:00
修复multimap导致重复http头的bug
This commit is contained in:
parent
477606d90c
commit
e365824be2
@ -69,17 +69,16 @@ void HttpClient::sendRequest(const string &strUrl, float fTimeOutSec) {
|
||||
//服务器域名
|
||||
host = FindField(host.data(), NULL, ":");
|
||||
}
|
||||
_header.emplace(string("Host"), host);
|
||||
_header.emplace(string("Tools"), "ZLMediaKit");
|
||||
_header.emplace(string("Connection"), "keep-alive");
|
||||
_header.emplace(string("Accept"), "*/*");
|
||||
_header.emplace(string("Accept-Language"), "zh-CN,zh;q=0.8");
|
||||
_header.emplace(string("User-Agent"),
|
||||
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36");
|
||||
_header.emplace("Host", host);
|
||||
_header.emplace("Tools", "ZLMediaKit");
|
||||
_header.emplace("Connection", "keep-alive");
|
||||
_header.emplace("Accept", "*/*");
|
||||
_header.emplace("Accept-Language", "zh-CN,zh;q=0.8");
|
||||
_header.emplace("User-Agent","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36");
|
||||
|
||||
if (_body && _body->remainSize()) {
|
||||
_header.emplace(string("Content-Length"), to_string(_body->remainSize()));
|
||||
_header.emplace(string("Content-Type"), "application/x-www-form-urlencoded; charset=UTF-8");
|
||||
_header.emplace("Content-Length", to_string(_body->remainSize()));
|
||||
_header.emplace("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
|
||||
}
|
||||
|
||||
bool bChanged = (_lastHost != host + ":" + to_string(port)) || (_isHttps != isHttps);
|
||||
@ -94,7 +93,7 @@ void HttpClient::sendRequest(const string &strUrl, float fTimeOutSec) {
|
||||
}
|
||||
if(!printer.empty()){
|
||||
printer.pop_back();
|
||||
_header.emplace(string("Cookie"), printer);
|
||||
_header.emplace("Cookie", printer);
|
||||
}
|
||||
|
||||
|
||||
|
@ -125,15 +125,30 @@ struct StrCaseCompare {
|
||||
|
||||
class StrCaseMap : public multimap<string, string, StrCaseCompare>{
|
||||
public:
|
||||
typedef multimap<string, string, StrCaseCompare> Super ;
|
||||
StrCaseMap() = default;
|
||||
~StrCaseMap() = default;
|
||||
string &operator[](const string &key){
|
||||
auto it = find(key);
|
||||
if(it == end()){
|
||||
it = emplace(key,"");
|
||||
it = Super::emplace(key,"");
|
||||
}
|
||||
return it->second;
|
||||
}
|
||||
|
||||
template <class K,class V>
|
||||
void emplace(K &&k , V &&v) {
|
||||
auto it = find(k);
|
||||
if(it != end()){
|
||||
return;
|
||||
}
|
||||
Super::emplace(std::forward<K>(k),std::forward<V>(v));
|
||||
}
|
||||
|
||||
template <class K,class V>
|
||||
void emplace_force(K &&k , V &&v) {
|
||||
Super::emplace(std::forward<K>(k),std::forward<V>(v));
|
||||
}
|
||||
};
|
||||
|
||||
class Parser {
|
||||
@ -167,7 +182,7 @@ public:
|
||||
auto field = FindField(line.data(), NULL, ": ");
|
||||
auto value = FindField(line.data(), ": ", NULL);
|
||||
if (field.size() != 0) {
|
||||
_mapHeaders.emplace(field,value);
|
||||
_mapHeaders.emplace_force(field,value);
|
||||
}
|
||||
}
|
||||
start = start + line.size() + 2;
|
||||
@ -247,7 +262,7 @@ public:
|
||||
for (string &key_val : arg_vec) {
|
||||
auto key = FindField(key_val.data(), NULL, key_delim);
|
||||
auto val = FindField(key_val.data(), key_delim, NULL);
|
||||
ret.emplace(key,val);
|
||||
ret.emplace_force(key,val);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user