PySide6.QtNetwork.QHttpPart¶
- class QHttpPart¶
QHttpPart
类用于保存 HTTP 多部分 MIME 消息中的主体部分。更多…概要¶
方法¶
def
__init__()
def
__ne__()
def
__eq__()
def
setBody()
def
setBodyDevice()
def
setHeader()
def
setRawHeader()
def
swap()
注意
本文档可能包含从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
的副本。如果此对象与
other
不相同,则返回true
。另请参阅
operator==()
如果此对象与
other
相同(即,如果它们具有相同的头部和主体),则返回true
。另请参阅
operator!=()
- setBody(body)¶
- Parameters:
body –
QByteArray
将此MIME部分的主体设置为
body
。除非通过setBodyDevice()
设置设备,否则将使用此方法设置的主体。对于大量数据(例如图像),请使用setBodyDevice()
,它不会在内部复制数据。另请参阅
设置设备以从
device
读取内容。对于大量数据,应优先使用此方法而不是setBody()
,因为使用此方法时内容不会被复制,而是直接从设备读取。device
必须已打开且可读。QHttpPart
不会拥有device
的所有权,即必要时必须关闭并销毁设备。如果device
是顺序的(例如套接字,但不是文件),则应在device
发出finished()后调用post()
。要取消设置设备并使用通过setBody()
设置的数据,请使用“setBodyDevice(0)”。- setHeader(header, value)¶
- Parameters:
header –
KnownHeaders
value – 对象
将已知头
header
的值设置为value
,覆盖任何先前设置的头。- setRawHeader(headerName, headerValue)¶
- Parameters:
headerName –
QByteArray
headerValue –
QByteArray
将标头
headerName
设置为值headerValue
。如果headerName
对应于已知标头(参见KnownHeaders
),原始格式将被解析,并且相应的“已处理”标头也将被设置。注意
设置相同的头部两次会覆盖之前的设置。为了实现同名HTTP头部的多重行为,你应该将两个值连接起来,用逗号(“,”)分隔,并设置一个单一的原始头部。
将此HTTP部分与
other
交换。此函数非常快且永远不会失败。