111,097
社区成员




webBrowser1.Navigate("http://xxx/PageView/login.aspx");
string cookStr =webBrowser1.Document.Cookie;
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://xxx/getdata.ashx?act=getlist");
request.Accept = "*/*";
request.Method = "get";
request.ContentType = "application/x-www-form-urlencoded";
request.Host = "www.a.com"; //此处已转化
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1)";
request.Headers.Add("X-Requested-With", "XMLHttpRequest");
request.Headers.Add("Cookie", cookStr);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (webBrowser1.ReadyState < WebBrowserReadyState.Complete) return;
cookStr = webBrowser1.Document.Cookie;
}
这个即使在登录成功之后 获取到的 依然为null.
//窗体加载事件,指向webBrowser跳转指定地址
private void Login_Load(object sender, EventArgs e)
{
webBrowser1.Navigate("http://139.129.57.94:8008/PageView/login.aspx");
}
//获取数据列表
private void button2_Click(object sender, EventArgs e)
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://139.129.57.94:8008/Handler/KeyWordMgtHandler.ashx?act=getlist");
request.Method = "get";
request.ContentType = "application/x-www-form-urlencoded";
request.Accept = "*/*";
request.Host = "139.129.57.94:8008";
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36";
request.Headers.Add("X-Requested-With", "XMLHttpRequest");
request.Headers.Add("Cookie", webBrowser1.Document.Cookie); //Cookie:ASP.NET_SessionId=gwervpnxevvu3kcgwydhr5mn 这里没有取到,现在服务器端 模拟是session方式判断账号密码,账号 administrator 密码20170116 密码按照当天日期变化
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
string retString = myStreamReader.ReadToEnd(); //这里返回的字符串 一直都是未登录
myStreamReader.Close();
myResponseStream.Close();
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (webBrowser1.ReadyState < WebBrowserReadyState.Complete) return;
cookStr = webBrowser1.Document.Cookie;
}
这个即使在登录成功之后 获取到的 依然为null.[/quote]
呃……这个可能性有很多。
有时候一个页面加载了,DocumentCompleted 会触发多次,可能因为有些异步加载的内容。
另外,session 是服务器端的概念,客户端是不需要理会的,客户端只需要关心 cookies 就行了。
[/quote]
这个多次触发的在这里已经return了,这里执行的是最后一次加载完毕后的。
if (webBrowser1.ReadyState < WebBrowserReadyState.Complete) return;
所以,这里不是cookie问题,而是session这个值 客户端没有取到
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (webBrowser1.ReadyState < WebBrowserReadyState.Complete) return;
cookStr = webBrowser1.Document.Cookie;
}
这个即使在登录成功之后 获取到的 依然为null.[/quote]
呃……这个可能性有很多。
有时候一个页面加载了,DocumentCompleted 会触发多次,可能因为有些异步加载的内容。
另外,session 是服务器端的概念,客户端是不需要理会的,客户端只需要关心 cookies 就行了。