0
votes

I am trying to login to wordpress using httpwebrequest, but unable to do so, there are multiple set-cookie in the response header, few cookies are lost and so unable to show the dashboard, however i am able to login using sockets, but as my all coding is built using httwebrequest i cannot switch to sockets.

response headers

(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

Please can any one suggest how to use httpwebrequest to the job, do i overwrite httpwebrequest to handle cookies from stream, if yes how do i do it?

On using HttpWebRequest post ("http://mywebsite.net/wp-login.php", "log=user1&pwd=pass1&wp-submit=Log+In&redirect_to=http://mywebsite.net/wp-admin/&testcookie=1"

it returns login page, yes i have checked everything 10 times, and the same works if used with sockets, with manual cookie handling.

the cookie in manual socket 'Set-Cookie' returns following:

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

same in httpwebresponse is:

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

the value is missing here =+

2
What makes you think the cookies are being lost? You haven't really explained what you're doing in enough detail... it would help if you could post the code you're using.Jon Skeet
I encountered the same problem. the cookie is like this: wordpress_XXXX=+; the values is missing. but it is correct when i get the networkd packet. and i use java httpurlconnection. so, how do you solve the problem?Tony

2 Answers

1
votes

Did you forget to set HttpWebRequest.CookieContainer?

By default, it would be null, meaning no cookies would be sent in request header, and no cookies from response would be preserved for latter usage.

0
votes

I can only suspect, so I may be wrong. Each HttpWebRequest is a new connection, and so a new session is created. The cookies become invalid because of different session. I think Encoding chunked and keep-alive shows that the current connection is somewhat important.

I believe you're using the same socket in the same connection to send all your cookies.

Hope this explains your problem. If not, a bit of code would be useful for further troubleshooting.