网络问题httprequest在android下实现的问题-遇到坑的同学有福了

android下的httprequest实现有些问题,native下当网络连接发生变化时,如没网了,切飞行模式了等等,引擎中调用
java下HttpUrlConnection封装,只考虑了connect的异常情况,但connect不是一个同步函数,有时这里并不抛出异常,而后面的getResponseCode会抛出异常,这个异常没有保护,导致读取header之类的一些代码会有问题,依赖这个其他组件如果没有考虑到会有各种问题,例如 sockeIO,
修复代码在这里(GITHUB有人提到过这个问题,貌似被打到3.1.6版本解决了)
if (0 != suc)
{
response->setSucceed(false);
response->setErrorBuffer(“connect failed”);
response->setResponseCode(responseCode);
return;
}

if (HttpRequest::Type::POST == requestType ||
    HttpRequest::Type::PUT == requestType)
{
    urlConnection.sendRequest(request);
}

responseCode = urlConnection.getResponseCode();

if (0 == responseCode)
{
** response->setSucceed(false);**
** response->setErrorBuffer(“connect failed”);**
** response->setResponseCode(-1);**
** return;**
}

char *headers = urlConnection.getResponseHeaders();
if (nullptr != headers)
{
    writeHeaderData(headers, strlen(headers), response);
}
free(headers);
5赞

马克~~~~~~~~~~~

mark.以防后面踩到

1赞

马赛克

马克,请问是Github上的哪个Pull Request?

没有pull request, 引擎团队自己修改下吧.

好的,我创建了一个issue:https://github.com/cocos2d/cocos2d-x/issues/18055

稍后会提交这个补丁,谢谢。

Pull Request地址:
https://github.com/cocos2d/cocos2d-x/pull/18056

1赞

mark