pyqt5 http请求
时间: 2023-09-02 15:14:23 浏览: 90
PyQt5 可以通过内置的 QNetworkAccessManager 类来进行 HTTP 请求。
以下是一个简单的例子,它使用 QNetworkAccessManager 类来向 http://www.baidu.com 发送 GET 请求,并将响应输出到控制台上:
```python
from PyQt5.QtCore import QUrl, QCoreApplication
from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply
def handle_response(reply):
if reply.error():
print('Error:', reply.errorString())
else:
print(reply.readAll().data().decode())
app = QCoreApplication([])
manager = QNetworkAccessManager()
url = QUrl('http://www.baidu.com')
request = QNetworkRequest(url)
reply = manager.get(request)
reply.finished.connect(lambda: handle_response(reply))
app.exec_()
```
在上面的代码中,我们首先创建了一个 QCoreApplication 实例,这是必需的,因为我们需要一个事件循环来处理网络请求。
然后,我们创建了一个 QNetworkAccessManager 实例,它将用于发送 HTTP 请求和接收响应。
接下来,我们创建了一个 QUrl 对象,它表示我们要请求的 URL。
然后,我们创建了一个 QNetworkRequest 对象,它将包含我们的请求。
然后,我们使用 manager.get() 方法向服务器发送 GET 请求,并将返回一个 QNetworkReply 对象,它表示服务器的响应。
最后,我们使用 reply.finished.connect() 方法将 handle_response() 函数与 reply 的 finished 信号连接起来。在这个函数中,我们首先检查响应是否出错,如果没有则打印响应的内容。
注意,由于网络请求是异步的,因此我们需要在事件循环中调用 app.exec_() 方法来启动事件循环。这个方法将一直阻塞,直到应用程序退出。
阅读全文