• 6623阅读
  • 1回复

用qt使用HttpWebRequest Post数据时如何保持Session ? [复制链接]

上一主题 下一主题
离线hover_sky
 

只看楼主 倒序阅读 楼主  发表于: 2010-02-02
用qt使用HttpWebRequest Post数据时如何保持Session ?
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
利用WebClient, HttpWebRequest向某址POST数据,htttpsever需要保持SESSION才能进行下一次的操作,否则就要重新验证。保持SESSION,关键在于如何保持住Cookie不变。用qt如何操作?
离线hover_sky

只看该作者 1楼 发表于: 2010-02-02
我现在是用    QNetworkAccessManager 来做post。

整个设想流程是:在post之前先经过验证。验证通过了,下面每一次post都是使用验证时候的session来和服务端来进行保持会话。

问题是:
      当server端加上session处理后,qt 就post不上去了。 就是保持不了验证时候的session。

解决办法实践:
      1,获得验证时候的sessionid
  1.             QByteArray value=reply->rawHeader("Set-Cookie");
  2.             int index=value.indexOf(';');
  3.             QByteArray list =value.mid(0,index);
  4.             if(!list.isEmpty())
  5.             {
  6.                 this->session_id=list;
  7.             }
  8.       
2,在每一次post时,加上sessionid
  1.     if(!this->session_id.isEmpty())
  2.     {
  3.         QNetworkCookie cookie(QByteArray("Cookie"), this->session_id);
  4.         QList<QNetworkCookie> cookies;
  5.         cookies.push_back(cookie);
  6.         //req.setHeader(QNetworkRequest::SetCookieHeader,cookie);
  7.         req.setRawHeader(QByteArray("Cookie"), this->session_id);
  8.         //req.setRawHeader("Cookie",this->session_id);
  9.     }
结果通过visual sniffer发现,sessionid没有被发出去。


希望大家指导一下,谢谢
快速回复
限100 字节
 
上一个 下一个