2011-09-05 49 views
0

好了,所以我有一个功能,我写道,应该允许我使用cookie数据发布。问题在于我在亚马逊登录页面上进行了测试,并且一直在回复说我需要启用Cookie。下面的代码C#后数据的Cookie不工作

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(); 
} 

的事情是,我还没有张贴任何发布数据,我只是去页面,它说我的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; 
     } 
} 

,并调用它像这样

 using(CookieWebClient ck = new CookieWebClient()) 
     { 
      String s = ck.DownloadString(action); 
     } 

甚至尝试它仍然告诉我,没有启用Cookie。

回答

1

亚马逊有一个API访问其服务(SOAP)。所以,不要试图做一些刮擦,我会强烈建议你使用他们的API。

+0

正确的,但具有与云主机做的,什么我开发无关与AWS。 –

+0

@ kelton52,他们有SOAP网络服务:http://flyingpies.wordpress.com/2009/08/01/17/对不起,我在我的答案中发布了错误的链接。现在应该修复。 –

+0

这似乎比我需要的方式,再加上我不使用wpf。我甚至没有尝试登录,我只需要亚马逊意识到我正在使用cookie。 –