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

Qt到PHP post请求被截断为1024个字符-为什么?,php,web-services,qt,http,xdebug,Php,Web Services,Qt,Http,Xdebug,我向PHP发送了一个QtJSON字符串>1024个字符(通过多部分编码和url编码进行了测试) 在PHP端,由于某种原因,JSON字符串被截断为1024个字符 我测试过: 客户端上的字符串正常,长度超过1024个字符 我使用了QUrlQuery而不是多部分,同样的情况 PHP:post_max_size 20M 寻找如何发送>1024个字符的提示您可能需要将waitforbytesswrite与某种循环一起使用,或者使用相关信号:bytesswrite 环回示例显示了如何在响应中正确发送大

我向PHP发送了一个QtJSON字符串>1024个字符(通过多部分编码和url编码进行了测试)

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

我测试过:

  • 客户端上的字符串正常,长度超过1024个字符
  • 我使用了
    QUrlQuery
    而不是多部分,同样的情况
  • PHP:
    post_max_size 20M

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

    您可能需要将
    waitforbytesswrite
    与某种循环一起使用,或者使用相关信号:
    bytesswrite

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

    void对话框::updateClientProgress(qint64个字节)
    {
    //当TCP客户端写入一些字节时调用
    // ...
    //只有在未完成且Qt写入缓冲区小于某个大小时,才能写入更多。
    
    如果(bytesToWrite>0&&tcpClient.bytesToWrite()我已经找到了答案。实际上是调试器截断了变量,或者更准确地说,显示被截断了。实际值未被触及,但显示误导了我。将调试器的值设置为2048可以解决问题

    实际上括号中的值(屏幕截图上方)是实际大小,我认为是字节大小

    感谢所有帮助过我的人

        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);
    
    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), '@'));
    
        // ...
    }