修正:核心服务接收POST请求时也对请求数据做URL解码会导致错误。

pull/130/head
Apex Liu 2018-12-19 16:19:42 +08:00
parent 26d0b79017
commit 44d693a453
1 changed files with 17 additions and 15 deletions

View File

@ -176,25 +176,27 @@ ex_rv TsHttpRpc::_parse_request(struct http_message* req, ex_astr& func_cmd, Jso
return TPE_HTTP_METHOD;
ex_astr json_str;
if (is_get)
json_str.assign(req->query_string.p, req->query_string.len);
else
json_str.assign(req->body.p, req->body.len);
if (is_get) {
json_str.assign(req->query_string.p, req->query_string.len);
// ½«²ÎÊý½øÐÐ url-decode ½âÂë
int len = json_str.length() * 2;
ex_chars sztmp;
sztmp.resize(len);
memset(&sztmp[0], 0, len);
if (-1 == ts_url_decode(json_str.c_str(), json_str.length(), &sztmp[0], len, 0))
return TPE_HTTP_URL_ENCODE;
json_str = &sztmp[0];
}
else {
json_str.assign(req->body.p, req->body.len);
}
if (0 == json_str.length())
return TPE_PARAM;
// 将参数进行 url-decode 解码
int len = json_str.length() * 2;
ex_chars sztmp;
sztmp.resize(len);
memset(&sztmp[0], 0, len);
if (-1 == ts_url_decode(json_str.c_str(), json_str.length(), &sztmp[0], len, 0))
return TPE_HTTP_URL_ENCODE;
json_str = &sztmp[0];
Json::Reader jreader;
Json::Reader jreader;
if (!jreader.parse(json_str.c_str(), json_param))
return TPE_JSON_FORMAT;