Nano Hash - криптовалюты, майнинг, программирование

QHttp недоступен в Qt5

Я заметил, что класс QHttp больше не доступен в Qt5, и я продолжаю получать сообщение об ошибке, в котором говорится, что для этого мне нужно использовать QNetworkAccessManager.

Есть ли способ получить доступ к этому классу в Qt5?


  • Да, вам нужно либо использовать QNetworkAccessManager (предпочтительно), либо использовать надстройку совместимости QtHttp, которая предоставляет класс QHttp, как это было в Qt4. 03.10.2014
  • Спасибо, но я не понимаю, как это сделать. Я всего лишь ученик. 03.10.2014
  • Это зависит от того, что вы хотите сделать. Вам нужно попытаться что-то закодировать, а затем отправить код, чтобы получить здесь помощь. 03.10.2014
  • Хорошо, но если бы я хотел использовать надстройку совместимости QtHttp, которая предоставляет класс QHttp, как это было в Qt4. Это похоже на включенный заголовочный файл или он добавлен в файл user.pro. 03.10.2014
  • Проверьте эту тему. В нем объясняется, как установить надстройку совместимости. 03.10.2014

Ответы:


1

Это простой пост HTTP (я использую Qt 5.3.2)

int Connection::postRequest(QString requestType, QUrl params){
    QString params_array = params.query();

    QNetworkRequest request(user->url);
    request.setHeader(QNetworkRequest::ContentLengthHeader, QByteArray::number(params_array.size()));
    request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");

    QEventLoop waitLoop;
    QNetworkAccessManager* connection = new QNetworkAccessManager(/*`this` can also be passed*/);
    QNetworkReply* reply = connection->post(request, params_array.toUtf8());
    QObject::connect(reply, SIGNAL(finished()), &waitLoop, SLOT(quit()));
    waitLoop.exec();

    int errorCode = reply->error();
    if (errorCode != 0){
        // Show Error Message
    }
    else{
        // Parse "reply"
    }

    delete reply;
    delete connection;
    return errorCode;
}
03.10.2014
  • Не могли бы вы опубликовать свой цикл ожидания? 24.03.2018

  • 2

    Используйте QNetworkAccessManager в Qt 5. Вы можете использовать цикл событий, чтобы дождаться завершения ответа, а затем прочитать доступные байты:

    QString My_class::My_Method()
    {
    
       QNetworkAccessManager manager;
    
       QNetworkReply *reply = manager.get(QNetworkRequest(QUrl(myURL)));
    
       QEventLoop loop;
       connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
       connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), &loop, SLOT(quit()));
       loop.exec();
    
       QByteArray bts = reply->readAll();
       QString str(bts);
    
       delete reply;
    
       return str;
    
    }
    

    Вы также можете сделать это асинхронно, подключив сигнал finished QNetworkAccessManager к слоту:

    connect(&manager,SIGNAL(finished(QNetworkReply*)),this,SLOT(onFinished(QNetworkReply*)));
    

    И прочитать данные там:

    void onFinished(QNetworkReply* reply)
    {
    
       if (reply->error() == QNetworkReply::NoError)
       {
           QByteArray bts = reply->readAll();
    
           ...
       }
    }
    
    04.10.2014

    3

    Предполагая, что вам не нужно поддерживать огромную базу кода, правильный путь — использовать новый QNetworkAccessManager вместо этого.

    03.10.2014
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..