Qt-Function-QWebFrame->load()_05

本文深入探讨了QWebFrame的load2函数中body参数的处理逻辑,详细分析了QByteArray类型的body变量如何被用于设置HTTP请求体的过程,并进一步跟踪到webkit内核中的webcore部分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接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来解析。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值