QHttpPart Class Reference

[QtNetwork module]

该QHttpPart类包含一个身体的一部分被里面一个HTTP多部分MIME消息中使用。More…

Methods

  • __init__ (self)
  • __init__ (self, QHttpPart other)
  • setBody (self, QByteArray body)
  • setBodyDevice (self, QIODevice device)
  • setHeader (self, QNetworkRequest.KnownHeaders header, QVariant value)
  • setRawHeader (self, QByteArray headerName, QByteArray headerValue)

Special Methods

  • bool __eq__ (self, QHttpPart other)
  • bool __ne__ (self, QHttpPart other)

Detailed Description

该QHttpPart类包含一个身体的一部分被里面一个HTTP多部分MIME消息中使用。

该QHttpPart类持有被里面一个HTTP多部分MIME消息中使用身体的一部分(这是由代表QHttpMultiPart类)。一个QHttpPart由一个头块和数据块,这是由彼此分开由两个连续的新行。为一个部分的一个例子是:

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

设置页眉,使用setHeader()和setRawHeader(),它的行为完全一样QNetworkRequest.setHeader()和QNetworkRequest.setRawHeader( ) 。

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

要构造一个小的身体QHttpPart ,考虑下面的代码片断(这将产生在上面的例子中显示的数据) :

  1. QHttpPart textPart;
  2. textPart.setHeader([QNetworkRequest](qnetworkrequest.html).ContentTypeHeader, [QVariant](qvariant.html)("text/plain"));
  3. textPart.setHeader([QNetworkRequest](qnetworkrequest.html).ContentDispositionHeader, [QVariant](qvariant.html)("form-data; name=\"text\""));
  4. textPart.setBody("here goes the body");

构建一个QHttpPart从设备(例如文件)读取,下面可以应用:

  1. QHttpPart imagePart;
  2. imagePart.setHeader([QNetworkRequest](qnetworkrequest.html).ContentTypeHeader, [QVariant](qvariant.html)("image/jpeg"));
  3. imagePart.setHeader([QNetworkRequest](qnetworkrequest.html).ContentDispositionHeader, [QVariant](qvariant.html)("form-data; name=\"image\""));
  4. imagePart.setRawHeader("Content-ID", "my@content.id"); // add any headers you like via setRawHeader()
  5. [QFile](qfile.html) *file = new [QFile](qfile.html)("image.jpg");
  6. file->open([QIODevice](qiodevice.html).ReadOnly);
  7. imagePart.setBodyDevice(file);

请注意, QHttpPart不走设备的所有权时设置,所以它是开发人员的责任消灭它时,它不再需要。一个好的想法可能是设置多部分消息,作为该设备的父对象,如记录在该文件QHttpMultiPart


Method Documentation

  1. QHttpPart.__init__ (self)

构造一个空QHttpPart对象。

  1. QHttpPart.__init__ (self, QHttpPart other)

创建副本other

  1. QHttpPart.setBody (self, QByteArray body)

设置此MIME部分的正文body。该机构设置用这种方法将被使用,除非该设备是通过设置setBodyDevice( ) 。对于大量的数据(例如图像) ,利用setBodyDevice(),它不会在内部复制数据。

See also setBodyDevice( ) 。

  1. QHttpPart.setBodyDevice (self, QIODevice device)

设置设备从阅读的内容device。对于大量的数据,该方法应优先于setBody(),因为使用这种方法,当内容不被复制,而是直接从设备读取。device必须是开放性和可读性。QHttpPart不采取所有权device,即该设备必须被关闭,并且,如果必要的破坏。如果device是连续的(如插座,但不是文件) ,QNetworkAccessManager.post( )后,应该调用device已发出的成品( ) 。为你重置设备,并通过使用数据集setBody( )时,使用“ setBodyDevice (0)” 。

See also setBody()和QNetworkAccessManager.post( ) 。

  1. QHttpPart.setHeader (self, QNetworkRequest.KnownHeaders header, QVariant value)

设置了已知头的值headervalue,复盖任何先前设置的标头。

See also QNetworkRequest.KnownHeaderssetRawHeader()和QNetworkRequest.setHeader( ) 。

  1. QHttpPart.setRawHeader (self, QByteArray headerName, QByteArray headerValue)

设置页眉headerName有利用价值headerValue。如果headerName对应于一个已知的报头(参见QNetworkRequest.KnownHeaders) , raw格式将被解析和相应的“熟”头将被设置为好。

注意:在设置相同的头两次将复盖以前的设置。为了实现多个同名的HTTP头的行为,你应该将两者连接起来的值,用逗号将它们隔开( “,” ),并设置一个单一的原始标题。

See also QNetworkRequest.KnownHeaderssetHeader()和QNetworkRequest.setRawHeader( ) 。

  1. bool QHttpPart.__eq__ (self, QHttpPart other)
  1. bool QHttpPart.__ne__ (self, QHttpPart other)