C#登录AlbumMemention.com
我正在尝试使用webrequest访问并登录AlbumRemembers.com,但我找不到合适的表单发布格式。我以前已经使用过这个过程,每次使用“&password=somthing&email”=somth@somth.com“对我有用,但在这件事上不行 我已经使用HttpWatch尝试发现数据是如何发送的,但没有帮助 表格如下:C#登录AlbumMemention.com,c#,html,C#,Html,我正在尝试使用webrequest访问并登录AlbumRemembers.com,但我找不到合适的表单发布格式。我以前已经使用过这个过程,每次使用“&password=somthing&email”=somth@somth.com“对我有用,但在这件事上不行 我已经使用HttpWatch尝试发现数据是如何发送的,但没有帮助 表格如下: <form name="login" action="/login/" method="post" enctype="multipart/form-data
<form name="login" action="/login/" method="post" enctype="multipart/form-data">
<input type="hidden" name="send" value="1" />
<p><label for="form_email">Your email address</label><input type="text" id="form_email" name="email" maxlength="320" /></p>
<p><label for="form_password">Your password</label><input type="password" id="form_password" name="password" maxlength="32" /></p>
<p><input class="checkbox" type="checkbox" id="form_keep_login" name="keep_login" value="keep" />
<label for="form_keep_login" class="checkbox_label">Keep me signed in. Uncheck if this is a shared computer.</label></p>
<p><input type="submit" value="Sign in" class="submit" /></p>
感谢您的帮助。您是否尝试使用
WebRequest.Credentials
属性而不是将凭据放入查询字符串中?为什么它不起作用
在表单标记中,我们可以看到
enctype="multipart/form-data"
这意味着以正常方式发布
string.Format("send=1&email=EMAIL&password=PASS");
不会为你工作的
解决方案
你需要做两件事
Content-Type: multipart/form-data; boundary=---------------------------7db433550e64
这里我们要说的是,表单数据分为多个部分,每个部分用边界分隔
---------------------------7db433550e64
无需设置内容长度,最后我们需要发送“-”,服务器将理解我们已经完成了数据发送
-----------------------------7db2c2d550e64
Content-Disposition: form-data; name="send"
1
-----------------------------7db2c2d550e64
Content-Disposition: form-data; name="email"
test@test.com
-----------------------------7db2c2d550e64
Content-Disposition: form-data; name="password"
testpass
-----------------------------7db2c2d550e64--
因此,您可能只想通过放置一些占位符来参数化这个字符串,如{0},{1}。。。然后使用string.format将它们替换为实际值
这将解决您的问题
还有两个提示,不要将post数据的编码更改为UTF-8,除非您确定它包含一些UTF-8字符。你可以使用CookieContainer,而不是自己管理cookies
希望它有帮助……你说使用HttpWatch没有帮助。。。以什么方式?结果如何?我希望我能在@Zannjaminderson的帖子中添加评论,但我的声誉太低:),总之WebRequest。凭据实现了ICredential接口,它只支持摘要、协商、Kerberos、NTLM和基本身份验证方案,不支持自定义/表单身份验证,因此在这里可能不起作用。。。
-----------------------------7db2c2d550e64
Content-Disposition: form-data; name="send"
1
-----------------------------7db2c2d550e64
Content-Disposition: form-data; name="email"
test@test.com
-----------------------------7db2c2d550e64
Content-Disposition: form-data; name="password"
testpass
-----------------------------7db2c2d550e64--