PySide6.QtNetwork.QHttpPart

class QHttpPart

QHttpPart 类用于保存 HTTP 多部分 MIME 消息中的主体部分。更多

概要

方法

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

QHttpPart 类用于保存 HTTP 多部分 MIME 消息(由 QHttpMultiPart 类表示)中的一个部分。QHttpPart 由一个头部块和一个数据块组成,两者之间由两个连续的新行分隔。一个部分的示例如下:

Content-Type: text/plain
Content-Disposition: form-data; name="text"
here goes the body

要设置头部信息,请使用setHeader()setRawHeader(),它们的行为与setHeader()setRawHeader()完全相同。

对于读取小块数据,使用setBody();对于较大的数据块,例如图像,使用setBodyDevice()。后一种方法通过不在内部复制数据,而是直接从设备读取来节省内存。这意味着在通过post()在网络上发送包含正文部分的多部分消息时,设备必须已打开并可读。

要构建一个带有小主体的QHttpPart,请考虑以下代码片段(这将生成上面示例中显示的数据):

textPart = QHttpPart()
textPart.setHeader(QNetworkRequest.ContentTypeHeader, QVariant("text/plain"))
textPart.setHeader(QNetworkRequest.ContentDispositionHeader, QVariant("form-data; name=\"text\""))
textPart.setBody("here goes the body")

要从设备(例如文件)读取以构造一个QHttpPart,可以应用以下内容:

imagePart = QHttpPart()
imagePart.setHeader(QNetworkRequest.ContentTypeHeader, QVariant("image/jpeg"))
imagePart.setHeader(QNetworkRequest.ContentDispositionHeader, QVariant("form-data; name=\"image\""))
imagePart.setRawHeader("Content-ID", "my@content.id") # add any headers you like via setRawHeader()
file = QFile("image.jpg")
file.open(QIODevice.ReadOnly)
imagePart.setBodyDevice(file)

请注意,当设置时,QHttpPart 不会取得设备的所有权,因此开发者有责任在不再需要时销毁它。一个好的做法可能是将设备的多部分消息设置为父对象,如QHttpMultiPart 文档中所记录的那样。

__init__()

构造一个空的 QHttpPart 对象。

__init__(other)
Parameters:

其他QHttpPart

创建 other 的副本。

__ne__(other)
Parameters:

其他QHttpPart

Return type:

布尔

如果此对象与other不相同,则返回true

另请参阅

operator==()

__eq__(other)
Parameters:

其他QHttpPart

Return type:

布尔

如果此对象与other相同(即,如果它们具有相同的头部和主体),则返回true

另请参阅

operator!=()

setBody(body)
Parameters:

bodyQByteArray

将此MIME部分的主体设置为body。除非通过setBodyDevice()设置设备,否则将使用此方法设置的主体。对于大量数据(例如图像),请使用setBodyDevice(),它不会在内部复制数据。

另请参阅

setBodyDevice()

setBodyDevice(device)
Parameters:

设备QIODevice

设置设备以从device读取内容。对于大量数据,应优先使用此方法而不是setBody(),因为使用此方法时内容不会被复制,而是直接从设备读取。device必须已打开且可读。QHttpPart不会拥有device的所有权,即必要时必须关闭并销毁设备。如果device是顺序的(例如套接字,但不是文件),则应在device发出finished()后调用post()。要取消设置设备并使用通过setBody()设置的数据,请使用“setBodyDevice(0)”。

另请参阅

setBody() post()

setHeader(header, value)
Parameters:

将已知头header的值设置为value,覆盖任何先前设置的头。

setRawHeader(headerName, headerValue)
Parameters:

将标头 headerName 设置为值 headerValue。如果 headerName 对应于已知标头(参见 KnownHeaders),原始格式将被解析,并且相应的“已处理”标头也将被设置。

注意

设置相同的头部两次会覆盖之前的设置。为了实现同名HTTP头部的多重行为,你应该将两个值连接起来,用逗号(“,”)分隔,并设置一个单一的原始头部。

swap(other)
Parameters:

其他QHttpPart

将此HTTP部分与other交换。此函数非常快且永远不会失败。