Я хочу отправить запрос http GET с помощью PyQt.Как отправить http-запрос с PyQt?
Несмотря на мои исследования, я не нашел примеров таких простых манипуляций в python.
Я получил код (который я изменил в соответствии с подсказками, данными Бакуриу в комментариях), но он не работает. Предположим, я хочу сделать запрос на веб-страницу facebook и напечатать ответ, который должен быть HTML-содержимым страницы.
from PyQt4 import QtCore, QtNetwork, QtCore, QtGui
from PyQt4.QtCore import *
import sys
from functools import partial
def printContent():
answerAsText = QString(replyObject.readAll())
print answerAsText
app = QtCore.QCoreApplication(sys.argv)
url = QtCore.QUrl("http://www.facebook.com")
request = QtNetwork.QNetworkRequest()
request.setUrl(url)
manager = QtNetwork.QNetworkAccessManager()
replyObject = manager.get(request)
replyObject.finished.connect(printContent)
sys.exit(app.exec_())
Это не вызывает никакой ошибки, оно просто ничего не печатает. Я не знаю, где проблема: Является ли мой запрос неправильным? Или это так, как я обрабатываю объект ответа впоследствии?
Почему это не работает? Может ли кто-нибудь показать мне действующий код?
'QNetworkReply' - это' QIODevice', поэтому он предоставляет методы ['readData' и' readLineData'] (http://doc.qt.io/qt-5/qiodevice.html#protected-functions). – Bakuriu
Да, я уже искал в этом направлении. Но я не понимаю, как это работает. Все функции (read, readAll, readData, readLine) возвращают QByteArrays, и я не знаю, что с ними делать. + readData принимает аргумент int, смысл которого я не получаю. Не могли бы вы немного подробнее узнать, как обращаться с этим объектом. –
Ну, 'QByteArray' - это просто текст. Если вы хотите, чтобы это как текст, вы можете просто «text = QString (data)». – Bakuriu