cocos2d-x2.0.2的httpclient扩展数据不全bug

刚绑完lua, 试用的时候就发现取到的数据不全, debug了之后发现是cocos2d-x 里httpclient扩展的一个小bug;

writeData是当curl收到数据的时候的数据copy函数, 也就是把curl收到的一段一段的数据包,我们把它”拼接”成一个完成的data;然后把整个data返回给调用者, 那自然是不能clear()的, 不然整个结果肯定就收到的就是最后一次的数据;

HttpClient.ccp 的writeData 修改为:

1
2
3
4
5
6
7
8
9
10
11
12
13
    size_t writeData(void *ptr, size_t size, size_t nmemb, void *stream)
    {
        std::vector<char> *recvBuffer = (std::vector<char>*)stream;
        size_t sizes = size * nmemb;

        // recvBuffer->clear();
        // recvBuffer->assign((char*)ptr, (char*)ptr + sizes);

        recvBuffer->insert(recvBuffer->end(), (char*)ptr, (char*)ptr + sizes);

        return sizes;
    }