Qt: Как передавать данные по одному HTTP-запросу в реальном времени?

Я должен передавать данные по отдельному HTTP-запросу в режиме реального времени. Целевое устройство обрабатывает данные только тогда, когда запрос подобен:

POST ...
Content-Type:...
Content-Length:9999999
Connection:Keep-Alive
Cache-Control:no-cache
Authorization:...

<data>
<data>
<data>
...

В Java, я должен сделать несколько взломать, чтобы заставить его работать, используя setFixedLengthStreamingMode(9999999); функция на моем HttpURLConnection объект. Затем я создаю запрос и заполняю данные тела BufferedOutputStream объект.

Сейчас я пытаюсь разработать приложение на основе Qt для передачи данных на это устройство, но не могу этого достичь. Я попробовал что-то вроде:

QNetworkRequest networkRequest;
networkRequest.setUrl(/*...*/);
// Set some headers
networkRequest.setHeader(QNetworkRequest::ContentLengthHeader, "9999999");

QIODevice* pIoDevice = new QBuffer(this);
pIoDevice->open(QIODevice::ReadWrite);

QNetworkAccessManager* pNetworkAccessManager = new QNetworkAccessManager(this);
pNetworkAccessManager->post(networkRequest, pIoDevice);

// Then exec current run loop to wait until I manually stop it.

С другой стороны, когда мой продюсер дает мне данные для передачи, я хочу сделать что-то вроде:

pIoDeviceData->write(/* data */);

Проблема в том, что при чтении сетевых трассировок (используя Wireshark) я вижу, что Content-Length испускается равно 0 поэтому устройство закрывает соединение, и я получаю код ошибки NetworkError::RemoteHostClosedError; Так что я что-то пропустил, но что? Любая идея?

0 ответов

Другие вопросы по тегам