【发布时间】:2012-12-27 08:36:36
【问题描述】:
我正在使用以下代码发出 Get 请求:
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();
在此之后,我按如下方式获取 cookie:
string theCookieHeader = TheResponse.Headers[HttpResponseHeader.SetCookie];
然后我将字符串处理为正确的 cookie 格式,并将其放入 cookie 容器中,以便在下一个 POST 请求中提供。从响应字符串 (TheResponseString) 我创建正确的 Post 数据和来自 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 我认为他正在尝试连接到无法访问的网站,顺便说一下 Li 请求 :) 我已经安装了 SkeetNotifier,太可爱了!
-
@MSakherSawan:问题是,我们会猜测 - 而 OP 可以确定,如果他可以访问所有日志。是的,OP 需要为不同的站点使用不同的 cookie - 但如果他运行第一个代码 以及 和第二个代码,他应该已经获得了一个新的 cookie。请注意,帖子的命名和缩进有助于...
-
嘿,我无权访问那里的日志,就 cookie 而言,我发送的 cookie 与我在第一个请求(GET)的响应中获得的 cookie 相同
标签: c# httpwebrequest