WEB-API无法获取QT Post方法发送的body数据

前端使用QT,构建url,发送get和post方法,QT的post代码如下:

QNetworkAccessManager *m_pHttpMgr = new QNetworkAccessManager(this);
QNetworkRequest requestInfo;
QString url = "http://自己的url";
QUrl strUrl = url;
requestInfo.setUrl(strUrl);

requestInfo.setRawHeader("Content-Type", "application/x-www-form-urlencoded");
requestInfo.setRawHeader("Content-Type", "charset='utf-8'");
    
QByteArray bodyData;
bodyData.append("name=john&");
bodyData.append("password=123456");

QNetworkReply *reply = m_pHttpMgr->post(requestInfo, bodyData);
QEventLoop eventLoop;
connect(m_pHttpMgr, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit()));
eventLoop.exec();

if (reply->error() == QNetworkReply::NoError)
{
	QByteArray responseByte = reply->readAll();
    //成功
}
else
{
	//失败
}
reply->deleteLater();

后台C#  WEB-API代码如下:

string m_UserName = string.Empty;
string m_Password = string.Empty;
var request = HttpContext.Current.Request;
NameValueCollection nvCollection = request.Params;

if (nvCollection.GetValues("name")      == null ||
    nvCollection.GetValues("password")  == null)
         return false;

看着代码没什么问题,但是用request.Params始终获取不到数据。同事的另一段代码却可以成功,两段代码几乎一样。后来通过不断验证,发现问题所在:

requestInfo.setRawHeader("Content-Type", "charset='utf-8'");
requestInfo.setRawHeader("Content-Type", "application/x-www-form-urlencoded");

charset='utf-8'的请求头若是先设置,后台的参数就可以获取到,若是后设置就获取不到。

注:

request.Params只可以获取到以x-www-form-urlencoded或form-data格式发送的数据,若是以json形式发送的数据获取不到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值