QNetworkAccessManager - 如何发送 MultiPart “PATCH” 请求
Posted
技术标签:
【中文标题】QNetworkAccessManager - 如何发送 MultiPart “PATCH” 请求【英文标题】:QNetworkAccessManager - How to send MultiPart “PATCH” request 【发布时间】:2016-02-28 14:35:09 【问题描述】:这个问题补充 QNetworkAccessManager - How to send “PATCH” request.
QNetworkAccessManager 没有方法
sendCustomRequest(const QNetworkRequest & request, const QByteArray & verb, QHttpMultiPart * multiPart)
我坚持使用 Qt 4.8-bb10。我应该如何进行?
【问题讨论】:
【参考方案1】:我认为您可以通过将额外部分放入数据中来自己构建多部分请求,如下所示。
抱歉,我无法测试,所以这只是一个粗略的想法。
QUrl url("http://data.mybusiness.com/patches");
QNetworkRequest request(url);
QString boundary("------------------------------------asdfyiuqwer762345");
request.setRawHeader("Content-Type", QByteArray("multipart/form-data; boundary=").append(boundary));
QByteArray data;
data.append("--" + boundary + "\r\n");
data.append("Content-Disposition: form-data; name=\"City\"\r\n");
data.append("\r\n");
data.append("Paris\r\n");
data.append("--" + boundary + "\r\n");
data.append("Content-Disposition: form-data; name=\"Country\"\r\n");
data.append("\r\n");
data.append("Canada\r\n");
data.append("--" + boundary + "--\r\n");
/* Final boundary has extra -- at end */
QBuffer * pBuffer = new QBuffer(pNetworkAccessManager);
pBuffer->setData(data);
QNetworkReply * pReply = pNetworkAccessManager->sendCustomRequest(request, "PATCH", pBuffer);
【讨论】:
感谢 mjk99!我用你的技术来实现我需要的东西,而且效果很好!有点麻烦,但仍然可行。 太棒了!我很高兴它足够接近你可以弄清楚。我通常不得不摆弄换行符才能使其正常工作。当然,您可以发送任何类型的数据,而不仅仅是文本。以上是关于QNetworkAccessManager - 如何发送 MultiPart “PATCH” 请求的主要内容,如果未能解决你的问题,请参考以下文章
QNetworkAccessManager::put - QIODevice::read: 将文件发送到 ftp 服务器后设备未打开
错误:没有用于调用“QNetworkAccessManager::QNetworkAccessManager(Networking* const)”的匹配函数