.net 3.5 下 2个HttpWebResponse 之间 公用一个 CookieContainer 为什么cookie传递不过去啊。登录的时候已经获取到cookie了,但是访问第二个页面的时候cookie没有传递过去。大家忙帮看一下 好吗?using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO.Compression;
using System.IO;
namespace ScanFarm
{
public class TrMain
{
public CookieContainer myCookie = null;
public WebHeaderCollection myHeader = null;
public CookieCollection myCookieA = null;
public TrMain()
{
myCookie = new CookieContainer();
}
public string OpenWelcomePage()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://s9.travian.cn/");
SetHttpWebRequest(request, "");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
myHeader = response.Headers;
myCookieA = response.Cookies;
GZipStream receiveStream = new GZipStream(response.GetResponseStream(), CompressionMode.Decompress);
StreamReader readStream = new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet));
string ret = readStream.ReadToEnd();
response.Close();
readStream.Close();
return ret;
}
public string OpenLoginPage(string username, string password, string login_id)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://s9.travian.cn/dorf1.php");
SetHttpWebRequest(request, "http://s9.travian.cn/Login.php");
request.Method = "POST";
string postData = string.Format("w=1280%3A800&login={0}&ea49f78={1}&e400d23={2}&e15039c=&s1.x=55&s1.y=8&s1=login&autologin=ja",
login_id, Uri.EscapeDataString(username), Uri.EscapeDataString(password));
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] byte1 = encoding.GetBytes(postData);
request.C;
request.ContentLength = byte1.Length;
Stream newStream = request.GetRequestStream();
newStream.Write(byte1, 0, byte1.Length);
newStream.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//myCookie.Add()
myHeader = response.Headers;
myCookieA = response.Cookies;
GZipStream receiveStream = new GZipStream(response.GetResponseStream(), CompressionMode.Decompress);
StreamReader readStream = new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet));
string ret = readStream.ReadToEnd();
response.Close();
readStream.Close();
return ret;
}
public string OpenMapPage(int x, int y)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://s9.travian.cn/dorf2.php");
SetHttpWebRequest(request, "http://s9.travian.cn/dorf1.php");
request.Method = "GET";
//string postData = Uri.EscapeUriString(
// string.Format("xp={0}&yp={1}&s1.x=2&s1.y=13&s1=ok",x,y));
//ASCIIEncoding encoding = new ASCIIEncoding();
//byte[] byte1 = encoding.GetBytes(postData);
//request.C;
//request.ContentLength = byte1.Length;
//Stream newStream = request.GetRequestStream();
//newStream.Write(byte1, 0, byte1.Length);
//newStream.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
myHeader = response.Headers;
myCookieA = response.Cookies;
GZipStream receiveStream = new GZipStream(response.GetResponseStream(), CompressionMode.Decompress);
StreamReader readStream = new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet));
string ret = readStream.ReadToEnd();
response.Close();
readStream.Close();
return ret;
}
private void SetHttpWebRequest(HttpWebRequest request, string referer)
{
request.CookieContainer = myCookie;
request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13";
request.Accept = "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
request.Headers.Add(HttpRequestHeader.AcceptLanguage, "zh-cn,zh;q=0.5");
request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate");
request.Headers.Add(HttpRequestHeader.AcceptCharset, "gb2312,utf-8;q=0.7,*;q=0.7");
request.Headers.Add(HttpRequestHeader.KeepAlive, "300");
request.Referer = referer;
request.KeepAlive = true;
request.Proxy = null;
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO.Compression;
using System.IO;
namespace ScanFarm
{
public class TrMain
{
public CookieContainer myCookie = null;
public WebHeaderCollection myHeader = null;
public CookieCollection myCookieA = null;
public TrMain()
{
myCookie = new CookieContainer();
}
public string OpenWelcomePage()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://s9.travian.cn/");
SetHttpWebRequest(request, "");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
myHeader = response.Headers;
myCookieA = response.Cookies;
GZipStream receiveStream = new GZipStream(response.GetResponseStream(), CompressionMode.Decompress);
StreamReader readStream = new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet));
string ret = readStream.ReadToEnd();
response.Close();
readStream.Close();
return ret;
}
public string OpenLoginPage(string username, string password, string login_id)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://s9.travian.cn/dorf1.php");
SetHttpWebRequest(request, "http://s9.travian.cn/Login.php");
request.Method = "POST";
string postData = string.Format("w=1280%3A800&login={0}&ea49f78={1}&e400d23={2}&e15039c=&s1.x=55&s1.y=8&s1=login&autologin=ja",
login_id, Uri.EscapeDataString(username), Uri.EscapeDataString(password));
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] byte1 = encoding.GetBytes(postData);
request.C;
request.ContentLength = byte1.Length;
Stream newStream = request.GetRequestStream();
newStream.Write(byte1, 0, byte1.Length);
newStream.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//myCookie.Add()
myHeader = response.Headers;
myCookieA = response.Cookies;
GZipStream receiveStream = new GZipStream(response.GetResponseStream(), CompressionMode.Decompress);
StreamReader readStream = new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet));
string ret = readStream.ReadToEnd();
response.Close();
readStream.Close();
return ret;
}
public string OpenMapPage(int x, int y)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://s9.travian.cn/dorf2.php");
SetHttpWebRequest(request, "http://s9.travian.cn/dorf1.php");
request.Method = "GET";
//string postData = Uri.EscapeUriString(
// string.Format("xp={0}&yp={1}&s1.x=2&s1.y=13&s1=ok",x,y));
//ASCIIEncoding encoding = new ASCIIEncoding();
//byte[] byte1 = encoding.GetBytes(postData);
//request.C;
//request.ContentLength = byte1.Length;
//Stream newStream = request.GetRequestStream();
//newStream.Write(byte1, 0, byte1.Length);
//newStream.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
myHeader = response.Headers;
myCookieA = response.Cookies;
GZipStream receiveStream = new GZipStream(response.GetResponseStream(), CompressionMode.Decompress);
StreamReader readStream = new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet));
string ret = readStream.ReadToEnd();
response.Close();
readStream.Close();
return ret;
}
private void SetHttpWebRequest(HttpWebRequest request, string referer)
{
request.CookieContainer = myCookie;
request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13";
request.Accept = "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
request.Headers.Add(HttpRequestHeader.AcceptLanguage, "zh-cn,zh;q=0.5");
request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate");
request.Headers.Add(HttpRequestHeader.AcceptCharset, "gb2312,utf-8;q=0.7,*;q=0.7");
request.Headers.Add(HttpRequestHeader.KeepAlive, "300");
request.Referer = referer;
request.KeepAlive = true;
request.Proxy = null;
}
}
}
myHeader = response.Headers;
后面加
myCookie = response.GetCookies();
看看行不?
代码不能那么写啊,以后自己都看不懂的
是这个页面
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://s9.travian.cn/dorf1.php");
打开后返回的 cookie 然后 cookie是和http://s9.travian.cn/dorf1.php绑定了 只有再次访问这个地址的时候cookie才带上
访问其他的 就不行寒一个 为什么啊http://s9.travian.cn/dorf1.php 里边 已经包含那个cookie不过 在提交别的页面的时候不带上去 :(