c#Post数据cookie不工作
好的,我有一个我写的函数,它应该允许我用cookies发布数据。问题是,我正在亚马逊登录页面上测试它,它不断回应说我需要启用cookies。这是密码c#Post数据cookie不工作,c#,cookies,post,C#,Cookies,Post,好的,我有一个我写的函数,它应该允许我用cookies发布数据。问题是,我正在亚马逊登录页面上测试它,它不断回应说我需要启用cookies。这是密码 public string DoPost(String url, PostData data, CookieContainer cookies) { HttpWebRequest objWebRequest = (HttpWebRequest)WebRequest.Create(url); objWebRequest.CookieC
public string DoPost(String url, PostData data, CookieContainer cookies)
{
HttpWebRequest objWebRequest = (HttpWebRequest)WebRequest.Create(url);
objWebRequest.CookieContainer = cookies;
objWebRequest.AllowAutoRedirect = true;
objWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";
if(data != null)
{
String post = data.ToString();
objWebRequest.Method = "POST";
objWebRequest.ContentLength = post.Length;
objWebRequest.ContentType = "application/x-www-form-urlencoded";
// Post to the login form.
using(StreamWriter swRequestWriter = new StreamWriter(objWebRequest.GetRequestStream()))
{
swRequestWriter.Write(post);
}
}
// Get the response.
HttpWebResponse objWebResponse =
(HttpWebResponse)objWebRequest.GetResponse();
// Read the response
using(StreamReader srResponseReader = new StreamReader(objWebResponse.GetResponseStream()))
{
string strResponseData = srResponseReader.ReadToEnd();
return strResponseData;
}
}
我这样称呼它
String action = "https://www.amazon.com/gp/flex/sign-in/select.html";
String s = DoPost(action, null, Cookies);
CookieContainer Cookies;
public Constructz0r()
{
Cookies = new CookieContainer();
}
using(CookieWebClient ck = new CookieWebClient())
{
String s = ck.DownloadString(action);
}
Cookies是在我的类构造函数中创建的,如下所示
String action = "https://www.amazon.com/gp/flex/sign-in/select.html";
String s = DoPost(action, null, Cookies);
CookieContainer Cookies;
public Constructz0r()
{
Cookies = new CookieContainer();
}
using(CookieWebClient ck = new CookieWebClient())
{
String s = ck.DownloadString(action);
}
问题是,我甚至没有发布任何帖子数据,我只是进入页面,它说我的cookies没有启用,尽管我觉得我是在DoPost中写的
我甚至尝试过使用WebClient的这个实现
public class CookieWebClient : WebClient
{
private CookieContainer _cookieContainer = new CookieContainer();
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest request = base.GetWebRequest(address);
if (request is HttpWebRequest)
{
(request as HttpWebRequest).CookieContainer = _cookieContainer;
}
return request;
}
}
这样称呼它
String action = "https://www.amazon.com/gp/flex/sign-in/select.html";
String s = DoPost(action, null, Cookies);
CookieContainer Cookies;
public Constructz0r()
{
Cookies = new CookieContainer();
}
using(CookieWebClient ck = new CookieWebClient())
{
String s = ck.DownloadString(action);
}
它仍然告诉我Cookie没有启用。亚马逊有一个访问其服务的权限(SOAP)。因此,我强烈建议您使用他们的API,而不是尝试进行一些清理。没错,但这与云托管有关,而我正在开发的与AWS无关。@kelton52,他们有SOAP web服务:对不起,我在回答中发布了错误的链接。应该现在就修好。这似乎比我需要的要多,而且我没有和wpf合作。我甚至还没有尝试登录,我只是需要amazon意识到我在使用Cookie。如果web浏览器可以做到这一点,我就不需要特殊的api。@Kelton52你不会得到太多帮助,因为问题不在于你编写的代码更多,而在于你所做的事情的不受支持的性质,你的问题假设这应该可以工作,但事实并非如此,亚马逊可能无法选择他们希望显示该错误的任何方法,即使您让它工作,它也可能在任何时候再次失败,而api已经记录了行为,并且得到了支持和维护。