带有多个Set-Cookie的HttpWebRequest

时间:2011-03-23 07:56:45

标签: c# cookies post httpwebrequest web-crawler

我正在尝试使用httpwebrequest登录wordpress,但无法执行此操作,响应标头中有多个set-cookie,很少有Cookie丢失,因此无法显示信息中心,但我可以使用套接字登录,但由于我的所有编码都是使用httwebrequest构建的,我无法切换到套接字。

响应标题

(Status-Line)   HTTP/1.1 302 Moved Temporarily
Date             Wed, 23 Mar 2011 07:52:24 GMT
Server         Apache
X-Powered-By    PHP/5.2.17
Expires:        Wed, 11 Jan 1984 05:00:00 GMT
Cache-Control   no-cache, must-revalidate, max-age=0
Pragma         no-cache
Set-Cookie     wordpress_test_cookie=WP+Cookie+check; path=/
Set-Cookie     wordpress_6e7750f6a474de23330d1b7f0e9990c6=admin%7C1301039544%7C16d39b9f49cf062500d50471df7320e9; path=/wp-content/plugins; httponly
Set-Cookie     wordpress_6e7750f6a474de23330d1b7f0e9990c6=admin%7C1301039544%7C16d39b9f49cf062500d50471df7320e9; path=/wp-admin; httponly
Set-Cookie     wordpress_logged_in_6e7750f6a474de23330d1b7f0e9990c6=admin%7C1301039544%7C0b2d990d7cc420c4203fbce464c285b2; path=/; httponly
Last-Modified   Wed, 23 Mar 2011 07:52:24 GMT
Location         http://breakingnewstoday.net/wp-admin/
Keep-Alive     timeout=3, max=100
Connection     Keep-Alive
Transfer-Encoding   chunked
Content-Type    text/html; charset=UTF-8

请任何人建议如何使用httpwebrequest工作,我是否覆盖httpwebrequest来处理来自流的cookie,如果是的话我该怎么办?

使用HttpWebRequest帖子(“http://mywebsite.net/wp-login.php”, “日志=用户1&安培; PWD = PASS1&安培; WP-提交=登录+在&安培; redirect_to的HTTP =://mywebsite.net/wp-admin/& testcookie = 1”

它返回登录页面,是的我已经检查了所有内容10次,如果与套接字一起使用,手动cookie处理也是如此。

手动套接字'Set-Cookie'中的cookie返回以下内容:

“wordpress_6e7750f6a474de23330d1b7f0e9990c6 = admin%7C1301040547%7C2463ecd9d363899be1129ae53287963c; path = / wp-content / plugins; httponly”

httpwebresponse中的

是:

“wordpress_sec_6e7750f6a474de23330d1b7f0e9990c6 = +; expires = Tue,23-Mar-2010 08:12:00 GMT;”

此处缺少值= +

2 个答案:

答案 0 :(得分:1)

你忘了设置HttpWebRequest.CookieContainer吗?

默认情况下,它将为null,这意味着在请求标头中不会发送任何cookie,并且不会保留响应中的cookie以供后者使用。

答案 1 :(得分:0)

我只能怀疑,所以我可能错了。每个HttpWebRequest都是一个新连接,因此会创建一个新会话。由于会话不同,cookie变为无效。我认为Encoding chunked和keep-alive表明当前的连接有点重要。

我相信您在同一个连接中使用相同的套接字来发送所有Cookie。

希望这能解释你的问题。如果没有,一些代码将有助于进一步的故障排除。