我正在与下面的代码Get请求:HttpWebRequest的在C#
TheRequest = (HttpWebRequest)WebRequest.Create(aURL);
TheRequest.Method = "GET";
TheRequest.CookieContainer = TheCookies;
TheRequest.UserAgent = GetUserAgent();
TheRequest.KeepAlive = false;
TheRequest.Timeout = 20000;
TheRequest.ReadWriteTimeout = 20000;
TheRequest.AllowAutoRedirect = true;
TheRequest.Headers.Add("Accept-Language", "en-us");
TheResponse = (HttpWebResponse)TheRequest.GetResponse();
TheResponseString = new StreamReader(TheResponse.GetResponseStream(), Encoding.ASCII).ReadToEnd();
在此之后我把饼干如下:
string theCookieHeader = TheResponse.Headers[HttpResponseHeader.SetCookie];
然后我处理字符串是正确的cookie格式并将其放入cookie容器中以在下次POST请求中提供。从响应字符串(TheResponseString)我创建适当的发布数据和来自cookiecontainer的cookie。
我对POST请求的代码如下:
TheRequest = (HttpWebRequest)WebRequest.Create(aURL);
TheRequest.Method = "POST";
TheRequest.CookieContainer = TheCookies;
TheRequest.UserAgent = GetUserAgent();
TheRequest.KeepAlive = false;
TheRequest.Timeout = 20000;
TheRequest.ReadWriteTimeout = 20000;
TheRequest.AllowAutoRedirect = true;
TheRequest.ContentType = "application/x-www-form-urlencoded";
TheRequest.Headers.Add("Accept-Language", "en-us");
byte[] bytes = Encoding.ASCII.GetBytes(aPostDataString);
TheRequest.ContentLength = bytes.Length;
Stream oStreamOut = TheRequest.GetRequestStream();
oStreamOut.Write(bytes,0,bytes.Length);
oStreamOut.Close();
TheResponse = (HttpWebResponse)TheRequest.GetResponse();
TheResponseString = new StreamReader(TheResponse.GetResponseStream(), Encoding.ASCII).ReadToEnd();
现在的问题是我有两个网站,他们是合作伙伴的网站,他们完全有相同的东西(这似乎但是如果你怀疑任何东西,那么请告诉我),但对于一个网站,它工作正常,而对于其他网站,它给出了网站错误页面的响应字符串。
请帮我看看诊断问题。
你需要为第二个提供不同的cookie,它发生在我身上!即使是相同的网站,但不同的子域名,有时你需要提供不同的cookie –
那么,如果你得到一个错误,你应该看看网站上的日志失败...你应该能够看到*为什么*你得到一个错误。 –
@JonSkeet我想他试图连接到无法访问的网站,btw关于李请求:)我已经安装了SkeetNotifier,它太可爱了! –