• 4502阅读
  • 3回复

太奇怪了,是不是QT的BUG(HTTP post 一下) [复制链接]

上一主题 下一主题
离线tangbao203
 

只看楼主 倒序阅读 楼主  发表于: 2012-07-19
用QNetworkAccessManage 进行 post 一下 (HTTP 请求 给 PHP)

然后服务端(PHP) 返回 $_POST['email'] 竟然不是输入的Email

(本图注解: 用户名输入:"TEST2011@gmail.com"  PHP 返回 接受的这个Email  竟然是 "$TEST2011@gmail.com",再比如输入"tangbao2011@gmail.com" 服务端 返回的 是 "*tangbao2011@gmail.com")

太离奇了, 我post 的数据是 用 QDataStream 写到 QByteArray
代码如下:
void LoginWidget::_authenticate()
  1. {    
  2.     QString username=usernameLineEdit->text();    
  3.     QString password=passwordLineEdit->text();    
  4.     if(username.isEmpty() || password.isEmpty())
  5.         errMsg->setText(tr("用户名或密码不可为空."));    
  6.     else
  7.         errMsg->setText("");    
  8.     //send authenticate request to server
  9.     QByteArray params;
  10.     QDataStream dataStream(&params,QIODevice::ReadWrite);
  11.     dataStream << "&email="<< username << "&password=" << password;
  12.     dataStream.setVersion(QDataStream::Qt_4_8);
  13.     qDebug() << username;    
  14.     QNetworkRequest request;
  15.     request.setUrl(QUrl(HTTP_AUTHENTICATE_IDENTITY_REQUEST));
  16.     request.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded");
  17.     request.setHeader(QNetworkRequest::ContentLengthHeader,params.length());
  18.     qDebug() << username;
  19.     reply=network.post(request,params);
  20.     connect(reply,SIGNAL(readyRead()),this,SLOT(_login()));
  21. }
调试输出图如下:


求解????



离线jasongood

只看该作者 1楼 发表于: 2012-07-20
不要用流试试看,  直接用 params = "email="+username+"&password="+password;
离线jasongood

只看该作者 2楼 发表于: 2012-07-20
流会把数据格式化的,格式化后,可能不是你看到的那样了。
离线tangbao203

只看该作者 3楼 发表于: 2012-07-20
回 2楼(jasongood) 的帖子
QString("ddd").toAscii() 解决了.
快速回复
限100 字节
 
上一个 下一个