大家好,我初学PyQT,有个很低级的问题想问问。在纯Python里只要3行代码就搞定了,但PyQT却完全搞不懂…
我是装好PyQT4后,看的C:\Python25\Lib\site-packages\PyQt4\examples\network\http.pyw这个例子
核心代码如下:
- self.http = QtNetwork.QHttp(self)
- self.outFile = QtCore.QFile(fileName)
- self.http.setHost(url.host(), 80)
- self.httpRequestAborted = False
- self.httpGetId = self.http.get(url.path(), self.outFile)
因为想给它加上header,所以我这样构造了一个header:
- header = QtNetwork.QHttpRequestHeader('GET', address) #这里我把服务器去掉了,只有路径
- header.setValue('Host', '61.dc.ftn.qq.com')
- header.setValue('Referer', 'http://mail.qq.com/')
- header.setValue('Cookie', 'FTN5K=' + ftn5k)
- header.setValue('Accept', '*/*')
- header.setValue('User-Agent', 'Mozilla/4.0')
- header.setValue('Connection', 'close')
接着我想用QHttp.request来加上header,这里就困惑了:
int QHttp.request (self, QHttpRequestHeader header, QIODevice device = None, QIODevice to = None)
int QHttp.request (self, QHttpRequestHeader header, QByteArray data, QIODevice to = None)
第一个方法需要device参数,但我不知道这个是什么,因为get时并不需要
第二个方法需要data参数,实际上我的request是GET,不需要传递任何body,所以构造了一个空的QByteArray,但仍然出错了:
- self.httpGetId = self.http.request(header, QtCore.QByteArray(), to=self.outFile)
有人能帮忙看看怎么做吗?
此外,我已经调用了self.http.setHost,还需要在header中设置吗?
还有就是PyQT的文档内容为什么用的是C++的语法…