接04。http://blog.youkuaiyun.com/binzhouweichao/article/details/8102539
继续查看qwebframe.cpp中load2的关于body部分的代码。
if (!body.isEmpty())
request.setHTTPBody(WebCore::FormData::create(body.constData(), body.size()));
变量body是load2的入口形参,const,不允许在程序中修改。类型为QByteArray。在调用时,我们使用实参url调用load1,然后load1再调用load2,并没有涉及到body的传递,可以断定body是使用的load2的默认值,即:const QByteArray &body = QByteArray()。对于QByteArray():
inline QByteArray::QByteArray(): d(&shared_null) { d->ref.ref(); }
是QByteArray的重载的构造函数之一,对其类的Data构造函数的对象d做了操作。ref是类QBasicAtomicInit的对象,具体只能参考类QAtomicInt的技术文档。
这里就先不讨论了。
来看下一条代码:
d->frame->loader()->load(request, false);
d是QWebFramePrivate类的对象,frame是WebCore::Frame的对象,找这个Frame中的loader()。
这样,就将代码定位到webcore中了,涉及到了webkit内核的内容。
下一步,进入webkit的webcore来解析。