问题描述
intwanIndex=int.Parse(this.wanIndex.Text);stringaction=string.Empty;if(this.Login.Text.Equals("连接")){action="restart";}else{action="stop";}//路由器登录账号密码stringpostData="user="+srtUseId;postData+=("&password="+strPassWord);//POST请求登录路由器获取cookieASCIIEncodingencoding=newASCIIEncoding();byte[]bData=encoding.GetBytes(postData);////创建HTTP请求HttpWebRequestpostReq=(HttpWebRequest)WebRequest.Create("http://192.168.1.1/login.cgi");////配置请求headerpostReq.Method="POST";//防止请求参数有中文编码?postReq.ContentType="application/x-www-form-urlencoded";postReq.CookieContainer=myCook;postReq.ContentLength=bData.Length;//senddataStreammyStream=postReq.GetRequestStream();myStream.Write(bData,0,bData.Length);myStream.Close();//GetresponseHttpWebResponsepostRes=(HttpWebResponse)postReq.GetResponse();StreamReaderpostReader=newStreamReader(postRes.GetResponseStream(),Encoding.GetEncoding("gb2312"));//需要截取POST请求响应报文中的cookie作为下一次GET请求的cookie,已经通过抓包获取具体格式//Get("Set-Cookie")返回头中cookieCookiesstr=postRes.Headers.Get("Set-Cookie");//Cookiesstr="wys_userid=root,wys_passwd=9F7B92E4E87A2A9B8F976A4042DEA70D;path=/";intiIndex=Cookiesstr.IndexOf(";");Cookiesstr=Cookiesstr.Substring(0,iIndex);stringstrContent=postReader.ReadToEnd();//关闭响应postRes.Close();postReader.Close();//fireBug获取断开WAN口连接GET请求的Urlaction后为具体WAN口以及执行的动作StringdisUrl=String.Format("http://192.168.1.1/wan_connect.asp?action_iface={0}&act={1}",wanIndex,action);//创建GET请求HttpWebRequestgetReq=(HttpWebRequest)WebRequest.Create(disUrl);//配置GET请求HEADERgetReq.Method="GET";//设置GET请求的cookie根据fireBug直接获取//stringstrCookie="Cookie:wys_userid=root,wys_passwd=9F7B92E4E87A2A9B8F976A4042DEA70D";getReq.Headers.Add("Cookie:"+Cookiesstr);HttpWebResponsegetRes=(HttpWebResponse)getReq.GetResponse();StreamReadergetReader=newStreamReader(getRes.GetResponseStream(),Encoding.UTF8);stringstrResult=getReader.ReadToEnd();//{ret:0,msg:'ok'}returnif(strResult.Equals("{ret:0,msg:'ok'}")){MessageBox.Show("OK");}else{MessageBox.Show("操作失败");}getReader.Close();getRes.Close();}catch(Exceptionerror){MessageBox.Show(error.Message);}}
做一个路由器登录,然后控制相关WAN口的断开与连接,我第一次POST请求得到的响应和fireBug抓到的是一样的,第二次用GET请求的时候cookie是手动拼上去的,之前把第一次POST响应里面的cookie作为第二次GET的cookie一直失败,有没有做过类似的指导一下cookie的使用