diff options
-rw-r--r-- | src/coap/qcoapclient.cpp | 12 | ||||
-rw-r--r-- | tests/auto/qcoapclient/tst_qcoapclient.cpp | 15 |
2 files changed, 18 insertions, 9 deletions
diff --git a/src/coap/qcoapclient.cpp b/src/coap/qcoapclient.cpp index 367ef5d..82e8f4e 100644 --- a/src/coap/qcoapclient.cpp +++ b/src/coap/qcoapclient.cpp @@ -263,7 +263,8 @@ QCoapReply *QCoapClient::get(const QUrl &url) /*! Sends the \a request using the PUT method and returns a new QCoapReply - object. Uses \a data as the payload for this request. + object. Uses \a data as the payload for this request. If \a data is empty, + the payload of the \a request will be used. \sa get(), post(), deleteResource(), observe(), discover() */ @@ -273,7 +274,8 @@ QCoapReply *QCoapClient::put(const QCoapRequest &request, const QByteArray &data QCoapRequest copyRequest = QCoapRequestPrivate::createRequest(request, QtCoap::Method::Put, d->connection->isSecure()); - copyRequest.setPayload(data); + if (!data.isEmpty()) + copyRequest.setPayload(data); return d->sendRequest(copyRequest); } @@ -308,7 +310,8 @@ QCoapReply *QCoapClient::put(const QUrl &url, const QByteArray &data) /*! Sends the \a request using the POST method and returns a new QCoapReply - object. Uses \a data as the payload for this request. + object. Uses \a data as the payload for this request. If \a data is empty, + the payload of the \a request will be used. \sa get(), put(), deleteResource(), observe(), discover() */ @@ -318,7 +321,8 @@ QCoapReply *QCoapClient::post(const QCoapRequest &request, const QByteArray &dat QCoapRequest copyRequest = QCoapRequestPrivate::createRequest(request, QtCoap::Method::Post, d->connection->isSecure()); - copyRequest.setPayload(data); + if (!data.isEmpty()) + copyRequest.setPayload(data); return d->sendRequest(copyRequest); } diff --git a/tests/auto/qcoapclient/tst_qcoapclient.cpp b/tests/auto/qcoapclient/tst_qcoapclient.cpp index e28a48b..c9067c0 100644 --- a/tests/auto/qcoapclient/tst_qcoapclient.cpp +++ b/tests/auto/qcoapclient/tst_qcoapclient.cpp @@ -363,16 +363,19 @@ void tst_QCoapClient::methods() QSignalSpy spyClientFinished(&client, SIGNAL(finished(QCoapReply *))); + const QByteArray payload = "test payload"; QScopedPointer<QCoapReply> reply; - if (qstrncmp(QTest::currentDataTag(), "get", 3) == 0) + if (qstrncmp(QTest::currentDataTag(), "get", 3) == 0) { reply.reset(client.get(request)); - else if (qstrncmp(QTest::currentDataTag(), "post", 4) == 0) + } else if (qstrncmp(QTest::currentDataTag(), "post", 4) == 0) { + request.setPayload(payload); reply.reset(client.post(request)); - else if (qstrncmp(QTest::currentDataTag(), "put", 3) == 0) + } else if (qstrncmp(QTest::currentDataTag(), "put", 3) == 0) { + request.setPayload(payload); reply.reset(client.put(request)); - else if (qstrncmp(QTest::currentDataTag(), "delete", 6) == 0) + } else if (qstrncmp(QTest::currentDataTag(), "delete", 6) == 0) { reply.reset(client.deleteResource(request)); - else { + } else { QString error = QLatin1String("Unrecognized method '") + QTest::currentDataTag() + "'"; QFAIL(qPrintable(error)); } @@ -395,9 +398,11 @@ void tst_QCoapClient::methods() } else if (qstrncmp(QTest::currentDataTag(), "post", 4) == 0) { QVERIFY(replyData.isEmpty()); QCOMPARE(reply->responseCode(), QtCoap::ResponseCode::Created); + QCOMPARE(reply->request().payload(), payload); } else if (qstrncmp(QTest::currentDataTag(), "put", 3) == 0) { QVERIFY(replyData.isEmpty()); QCOMPARE(reply->responseCode(), QtCoap::ResponseCode::Changed); + QCOMPARE(reply->request().payload(), payload); } else if (qstrncmp(QTest::currentDataTag(), "delete", 6) == 0) { QVERIFY(replyData.isEmpty()); QCOMPARE(reply->responseCode(), QtCoap::ResponseCode::Deleted); |