Postman|Qt笔记-解决Could not get any response

Posted IT1995

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Postman|Qt笔记-解决Could not get any response相关的知识,希望对你有一定的参考价值。

这里Fiddler抓包是有显示的:

 但Postman却提示Could not get any response

 经过各种分析,发现问题出现在服务端

 

主要的原因就是Content-Length这个值,这里的已经告诉客户端是utf-8编码的,但里面含有中文,对应的数据Content-Length与body里面的长度不一致。

服务端是这样计算长度的:

class HttpResponse {

public:
    static QString success(const QString &body){

        QString ret = "HTTP/1.1 200 OK\\r\\n"\\
                      "Date: %1\\r\\n"\\
                      "Pragma: no-cache\\r\\n"\\
                      "Content-Type: application/json; charset=utf-8\\r\\n"\\
                      "Cache-Control: no-cache\\r\\n"\\
                      "Server: It1995HttpsWebServer\\r\\n"\\
                      "Content-Length: %2\\r\\n"\\
                      "\\r\\n"\\
                      "%3";

        QLocale locale = QLocale::English;
        QString format = "ddd,dd MM yyyy hh:mm:ss";
        QString currentTime =locale.toString(QDateTime::currentDateTime().toUTC(), format) + " GMT";

        int length = body.size();
        ret = ret.arg(currentTime).arg(length).arg(body);
        return ret;
    }
};

这种方式不正确,没有转换成utf-8计算长度,正确的代码:

class HttpResponse {

public:
    static QString success(const QString &body){

        QString ret = "HTTP/1.1 200 OK\\r\\n"\\
                      "Date: %1\\r\\n"\\
                      "Pragma: no-cache\\r\\n"\\
                      "Content-Type: application/json; charset=utf-8\\r\\n"\\
                      "Cache-Control: no-cache\\r\\n"\\
                      "Server: It1995HttpsWebServer\\r\\n"\\
                      "Content-Length: %2\\r\\n"\\
                      "\\r\\n"\\
                      "%3";

        QLocale locale = QLocale::English;
        QString format = "ddd,dd MM yyyy hh:mm:ss";
        QString currentTime =locale.toString(QDateTime::currentDateTime().toUTC(), format) + " GMT";

        int length = body.toUtf8().size();
        ret = ret.arg(currentTime).arg(length).arg(body);
        return ret;
    }
};

关键:

 

以上是关于Postman|Qt笔记-解决Could not get any response的主要内容,如果未能解决你的问题,请参考以下文章

解决Postman报错:Could not send request

postman 请求接口Could not get any response(完美解决)

postman 请求接口Could not get any response(完美解决)

postman出现Could not get any response

postman Could not send request

postman Could not get any response。