2014-07-22 124 views
0

我对HTTP协议相当陌生,但我正在研究它以便能够自动认为C#控制台应用程序在Twitter上创建一个新帐户。 我在做什么,首先是做一个GET请求,以便收集页面上的一些数据(例如真实性标记),然后我将数据发布到为其设计的特定URL。我用于GET操作的URL是“https://www.twitter.com/signup/关于HTTP协议

然后我执行POST操作,提供所有必需的标题(Cookie除外,我不知道该Cookie对于该过程是否重要)以及我想要创建的帐户的格式化数据。

问题是:当我开始我的程序时,首先它不创建任何帐户,然后服务器回答我重新导向回到www.twitter.com/account/new,感觉我没有填写正确的领域,但我不知道什么是真正发生的事情。

这是我的主要代码:

static void Main(string[] args) 
     { 
      // Set up data info 
      string[] infos = SetUpAccountInfo(); 
      string parsedData= FormDataParsing(infos); 

      StreamWriter myWriter = null; 
      StreamReader myReader = null; 
      CookieContainer cookies = new CookieContainer(); 

      HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(POSTSignUpURL); 
      objRequest.Method = "POST"; 
      objRequest.Host = "twitter.com"; 
      objRequest.ProtocolVersion = HttpVersion.Version11; 
      objRequest.ContentLength = machin.Length; 
      objRequest.ContentType = "application/x-www-form-urlencoded"; 
      objRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"; 
      objRequest.Headers.Add("accept-encoding", "gzip,deflate,sdch"); 
      objRequest.Headers.Add("accept-language", "fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4"); 
      objRequest.Headers.Add("cache-control", "max-age=0"); 
      objRequest.Headers.Add("origin", "https://twitter.com"); 
      objRequest.Referer = "https://twitter.com/signup"; 
      objRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36"; 
      System.Net.ServicePointManager.Expect100Continue = false; 
      objRequest.CookieContainer = cookies; 

      try 
      { 
       myWriter = new StreamWriter(objRequest.GetRequestStream()); 
       myWriter.Write(parsedData); 


      } 
      catch (Exception e) 
      { 
       // return e.Message; 
      } 
      finally 
      { 
       myWriter.Close(); 

      } 

      HttpWebResponse response = objRequest.GetResponse() as HttpWebResponse; 
      using (StreamReader sr = 
       new StreamReader(response.GetResponseStream())) 
      { 
       string result = sr.ReadToEnd(); 
       HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument(); 
       document.LoadHtml(result); 

       // Close and clean up the StreamReader 
       sr.Close(); 
      } 



     } 

回答