Postman|Qt笔记-解决Could not get any response
生活随笔
收集整理的這篇文章主要介紹了
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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Boot笔记-设置拦截器为
- 下一篇: 信息安全工程师笔记-案例分析(三)