php - Qt 到 PHP 发布请求被截断为 1024 个字符 - 为什么?

标签 php web-services qt http xdebug

我向 PHP 发送了一个 Qt JSON string > 1024 个字符(通过多部分和 url 编码对两者进行了测试)。

    QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType);
    QHttpPart textPart;
    textPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"swiftjson\""));
    textPart.setBody(QJsonDocument(model.toJson()).toJson(QJsonDocument::Compact));
    multiPart->append(textPart);

在 PHP 端,由于某种原因,JSON 字符串被截断为 1024 个字符

String truncated at 1024

我测试过:

  1. 客户端的字符串可以,并且超过1024个字符
  2. 我使用了QUrlQuery而不是多部分,同样的情况
  3. PHP:post_max_size 20M

正在寻找如何发送> 1024 个字符的提示

最佳答案

您可能必须将 waitForBytesWritten 与某种循环一起使用,或者使用相关信号:bytesWritten

http://doc.qt.io/qt-5/qabstractsocket.html#waitForBytesWritten

http://doc.qt.io/qt-5/qiodevice.html#bytesWritten

环回示例展示了如何在响应中正确发送大负载。

http://doc.qt.io/qt-5/qtnetwork-loopback-dialog-cpp.html

static const int PayloadSize = 64 * 1024; // 64 KB
static const int TotalBytes = 50 * 1024 * 1024;


connect(&tcpClient, SIGNAL(bytesWritten(qint64)),
            this, SLOT(updateClientProgress(qint64)));

// called when the TCP client connected to the loopback server
bytesToWrite = TotalBytes - (int)tcpClient.write(QByteArray(PayloadSize, '@'));

...

void Dialog::updateClientProgress(qint64 numBytes)
{
    // callen when the TCP client has written some bytes

    // ...

    // only write more if not finished and when the Qt write buffer is below a certain size.
    if (bytesToWrite > 0 && tcpClient.bytesToWrite() <= 4*PayloadSize)
        bytesToWrite -= (int)tcpClient.write(QByteArray(qMin(bytesToWrite, PayloadSize), '@'));

    // ...
}

希望对您有所帮助。

关于php - Qt 到 PHP 发布请求被截断为 1024 个字符 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32508378/

相关文章:

java - 面向消息和面向 RPC 的 Web 服务之间的区别

java - "org.apache.cxf.interceptor.Fault: null while invoking"异常解决方法好吗?我找不到原因。 (附上日志)

qt - 当我设置边框半径时,角消失了

php - 我是否会收到来自 Paypal 立即购买按钮的所有事件的回调?

php - Ajax 问题、无效 JSON

php - 发布生产代码的最佳方式

php - 无法弄清楚这个 mysql 到 mysqli 的变化

web-services - Web 服务应该是事务性的吗?

c++ - Windows/opengl glext.h 构建问题

macos - Mac 上 Qt Creator 的单文档界面